Projekt: Data Oriented Blog

12

Mam teraz trochę więcej wolnego czasu, postanowiłem więc zrealizować swoje małe plany co do bloga o programowaniu funkcyjnym. Jako, że podstawą programowania funkcyjnego jest abstrakcyjne myślenie, blog nie może być tylko dla mnie. I nie może być zwyczajny.

Chcę, aby sam sobą reprezentował piękno takich języków. Dlatego postanowiłem nie korzystać z milionów dostępnych template-ów, ale stworzyć go samemu, od podstaw.

Czym jest strona internetowa?
Większość programistów rozumie funkcje jako sekwencje rozkazów. Dla programistów obytych z programowaniem funkcyjnym funkcja jest relacją pomiędzy stanem wejściowym a wyjściowym. Celem tego projektu jest pokazanie, jak możemy traktować zapytanie HTTP jako funkcję aplikowaną do stanu systemu. Aplikacja tej funkcji generuje nowy stan systemu oraz odpowiedź serwera.

Oto założenia, jakimi się kieruję:

  • Po pierwsze, http://motherfuckingwebsite.com -> żadnego JavaScriptu dla użytkownika. Tylko HTML5 i CSS.
  • Po drugie, baza danych: przecież to nie może być MySQL... Baza danych także powinna być trwałą strukturą danych. W końcu to blog o językach funkcyjnych -> Perdure: https://hackage.haskell.org/package/perdure
  • Po trzecie, umożliwienie użytkownikowi powrotu do stanu witryny w dowolnym momencie w czasie -> zero kłamstw, zero usuwanych postów, zero zacierania śladów.
  • Po czwarte, dodawanie postów: jedynie po tej stronie odejdziemy od HTLM-only na rzecz PureScript
  • Po piąte, łatwy i przyjemny sposób dodawania postów: markdown. Czy jest coś bardziej przyjemnego, niż pisanie parserów w językach funkcyjnych?
  • Po ostatnie, OAuth2. Dla wygody.

Byłbym bardzo, bardzo wdzięczny za wszelką konstruktywną krytykę, słowo zachęty, pull requesty za jakiś czas, nawet łapkę w górę ;)

Chciałbym też prowadzić w tym wątku mały worklog, więc jeżeli jesteście zainteresowani, jak mi idzie, możecie subskrybować :)

#worklog
* Napisany spampost na 4p
* Na piątek umówiony kontakt z UI/UX designerem, dziewczyna robi niesamowite rzeczy: https://www.linkedin.com/in/elzbietarogalska
* Planowany czas opublikowania pierwszej działającej wersji bloga: 2016-01-21

EDIT @pomocnik123

0

Bloga planujesz prowadzić w jezyku angielskim czy polskim?

0
tdudzik napisał(a):

Bloga planujesz prowadzić w jezyku angielskim czy polskim?

Po angielskim raczej. Ale zawsze mogę odpowiedzieć na jakieś pytania na 4p w ojczystym języku, jeżeli jakiś fragment będzie mniej zrozumiały ;)

0
merlinnot napisał(a):


szczerze nie widzę tam niczego niesamowitego ...
0

Wg. mnie opis języka powinieneś napisać w swoim własnym języku funkcyjnym. Jeśli język jest z natury czytelny to nie ma potrzeby pisania więcej dokumentacji niż sam kod.

0

Jeśli liczysz na pull requesty to jest może jakieś repozytorium publiczne?

Poza tym to bardzo fajny projekt, powodzenia.

0
#worklog
- półtorej godziny opisywania tego, jak ma wyglądać logo i sam blog

Strona ma być lightweight i przy okazji można by się nauczyć czegoś nowego, chyba zdecyduję się na http://www.basscss.com + http://cssnext.io
Można by do tego dorzucić jeszcze https://github.com/johnotander/immutable-css

Co o tym myślicie?

Zastanawiam się też, jak rozwiązać kwestię komentarzy...

3

Prace nad initial commit trwają :)

Screen Shot 2016-01-18 at 13.12.25.png

4

#worklog

Pierwsza działająca wersja już jest! :)

https://github.com/merlinnot/com-merlinnot

Koniec końców stanęło na:

  • Yesod jako framework
  • Hamlet jako template html
  • Julius do ewentualnego JS (może kilka linijek do komentarzy nie zaszkodzi?)
  • Lucius (z zamiarem przejścia na Casiusa) do CSS
  • Basscss

Zapraszam do testowania, komentowania i ulepszania.

0

Jak tam projekt? Do końca zakładanego terminu zostało tylko 9h i 36m :]

0
Georghinio napisał(a):

Jak tam projekt? Do końca zakładanego terminu zostało tylko 9h i 36m :]

Post wyżej masz napisane, że działa :)
Projekt: Data Oriented Blog

1

#worklog

Jutrzejszy (dzisiejszy) dzień cały dla DO-bloga ;) Ktoś założył dzisiaj temat, czy da się pogodzić pracę, studia i wszystko inne. Cóż, da się, ale łatwo nie jest ;)

1

#worklog

Dzisiaj całkiem sporo zmian (i nauki nowych rzeczy):

  • można już dodawać i updateować posty (POST json /post)
  • posty są listowane w menu
  • aktualny post jest odpowiednio podświetlany w liście
  • post ma odpowiedni tytuł
  • chrupki mają odpowiednie tytuły i url-e
  • treść posta jest już zmieniana z markdown na html
  • więcej urli jest "bezpiecznych" (poprawność sprawdzana przy kompilacji)
  • zrobiony jest konektor do bazy danych (type-safe), który można podłączyć do wszelakich Postgresów, Mysqli, Sqlitów i innego badziewia
  • całość jest przygotowana do dodania funkcjonalności "cofania się w czasie"

Co teraz do zrobienia?

  • można by przenieść większą część pracy na bazę danych, ale przy kilkudziesięciu / setce postów to chyba gra nie warta świeczki
  • poprawienie wyglądu wersji mobilnej (nie mam zupełnie pomysłu na to, gdzie dać logo, listę na dole chyba zrobię jednokolumnową
  • komunikaty o błędnych url-ach przy dodawaniu nowego posta (url można ustawić samemu, żeby był google-friendly)
  • strona główna, na razie jest tam jedno słowo :)
  • przekierowanie gołego /blog do najnowszego posta
  • obsługa sytuacji, kiedy w ogóle nie ma postów (teraz jest po prosty 404, może to i dobrze?)
  • logo w SVG
  • OAuth2 do dodawania postów + frontend do tego
  • ...

Cała strona (CSS + html + sama treść średnio długiego posta) to teraz 18 kb (niekompresowane) (nie licząc logo, bo jeszcze nie zrobiłem w SVG)

0

próbowałem to wczoraj postawić na Windzie, instalacja mieliła się z 0.5h po czym całkiem stanęła na Shakespeare (wyłączyłem) - to normalne w Haskellu na Windowsie? Wrzuciłbyś to na jakiś serwer żeby można było chociaż efekt podejrzeć;)

1

Dokładnie, przydałoby się demo on-line.

0

Sesja do poniedziałku, to w przyszłym tygodniu wrzucę, jak zrobię OAuth. Muszę zobaczyć, czy w którymś nowszym LTS-ie jest ta biblioteka, której użyłem, bo ostatnio robiłem czystą instalację tego na nowym systemie i musiałem dodać jako extdep. Co nie powinno mieć wpływu na Shakespeare, mógłbym postawić sobie wirtualkę z Windowsem, ale trochę boję się to robić na komputerze z procesorem 1.2 GHz ;)

0

Cóż, aby umilić życie tym, którzy mają problemy z kompilacją pod Windowsem i tych, którzy chcieliby zobaczyć demo mam dwie opcje:

  1. Docker - plusy takie, że będzie to docelowy kontener na mojego bloga, więc będę miał już odwaloną część pracy, minusy takie, że musicie umieć używać dockera
  2. Halcyon - plusy takie, że raz skompilowany moduł (przez kogokolwiek na świecie) nie będzie drugi raz kompilowany u Was, minusy takie, że i tak będę musiał robić dockera, i tak. Właściwie to nie wiem, czy jest Halcyon na Windowsa...

To co wolicie? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1