[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.13259 Reply
File: 14050764.jpg
Jpg, 823.54 KB, 1300×800 - Click the image to expand
edit Find source with google Find source with iqdb
14050764.jpg
Ко мне поступило предложение на модификацию HJavaScript от Joel Björnson. Вернее он посоветовал мне сделать форк, внести изменения, потом связаться с ним на предмет обновления библиотек на хакадже. Так как сам я ленивый, я ищу кого-нибудь, кто сделает всю работу за меня. Или хотя бы половину работы. Плачу няшками. Москвичу или гостю столицы могу подарить сертификат на прыжок с десантным парашютом с высоты 800 метров (или оплатить подобное мероприятие в Вашем регионе, если Ваш парашютный клуб принимает переводы от частных лиц).

Вводная информация:

Направление - веб разработка, html5 как универсальная платформа для разработки приложений.
Изюминка - а давайте будем вместо джава-скрипта использовать eDSL-ы на языке с такой-то типизацией!
Задача - добавить поддержку html5 canvas в HJScript.
Будут затронуты - HJavaScript и HJScript.
Возможное дальнейшее развитие - реализация поддержки html5 в HJScript, создание библиотек для построения графических пользовательских интерфейсов, создание графических библиотек для игрушек, бизнесовой графики и т.п.

Задачи и приоритеты:

HJScript - добавление поддержки Сanvas согласно стандартам (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-canvas-element) - приоритетно.
HJScript - добавление поддержки остальных объектов html5 - не приоритетно.
HJScript - максимально строгая типизация объектов html5 - если понимаем, что это совсем нахаляву - "не приоритетно", иначе - "на заметку" (т.е. не делаем, но дизайним либу так, чтобы потом это можно было добавить путём модификации кода либы максимально прозрачно для потребителей).
HJScript - дополнительное юзабилити (замена типов на соответствующие классы в существующих функциях) - не приоритетно и только после обсуждения этого вопроса с Джолем. Нужно понять, почему он сам этим не воспользовался, возможно в этом есть скрытый смысл, которого я не понимаю.

HJavaScript - решение функционала строго под нужды модификации HJScript (сорт оф хардкод) - приоритетно.
HJavaScript - исправление фактических ошибок в притти-принтере - приоритетно.
HJavaScript - минимальный редизайн для обеспечения возможности расширения функционала (тупо расширение списка экспортируемых функций) - не приоритетно.
HJavaScript - грамотный редизайн для обеспечения возможности расширения функционала (продумываем, что экспортируем, допускается редизайн самой библиотеки, чтобы не экспортировать совсем низкоуровневое говно, но предоставить возможности расширения) - не приоритетно.
HJavaScript - редизан в соответствии с новыми фишками Хаскиля (замена фундепов семествами классов и т.п.) + обеспечение дополнительного юзабилити - не приоритетно и только под платформу. Т.е. если требуются фишки, поддерживаемые в > 7.0.3 - либо ничего не делаем, либо ждем платформу.
HJavaScript - производительность (обеспечение возможности на bytestring, обеспечение возможности написания пользовательских рендерилок и т.п.) - на заметку.

Оценка затраты (очень приблизительно):

Разрабока - 60 часов
Коммуникации и организационные вопросы - 10 часов
Техническое обеспечение (учимся пользоваться системой контроля версий, wiki и т.п.) - 16 часов
Ресёч, контроль качества, тестирование, документирование, багфикс, релиз - 30 часов.

Итого: 58 часов в рыло, если делим поровну. Минимальные требования - выделять 10 часов в неделю. Таким образом, проект на полтора месяца. Дольше - тупо заебёт, я это знаю, поэтому так и рассчитываю. Если видим, что заябывает раньше, или не укладываемся в сроки - режем функционал. Всё что "не приоритетно" и ниже - можно вырезать без вреда для качества, тут такого процентов 90 как видите.

Требования:

- 10 часов в неделю, как уже писал.
- Минимальные знания хаскиля, включая тайплевел (да, будет говно на фундепах) и желание во всем этом разобраться бесплатно (т.е. если вы не планируете писать курсовую на Хаскеле, или устраиваться математиком в касперский-лабс, скорее всего вам это будет неинтересно).
- Понимание того, что лучшее - враг хорошего; что задачи делаются строго по приоритетам, даже если при реализации следующего шага всё равно придётся переписывать предыдущие; что процесс код-ревью существует даже в командах из двух разработчиков и даже в фан-проектах на анонимных досочках; что фиксирование статусов задач, трудозатрат и изменений - столь же увлекательный процесс, как и написание кода.
- Наличие email-а (фейкового или нет, мне пофиг) и гуглетолка (скайпами, аськами, жаберами и windows messengerами пользоваться не умею, хотя если готовы научить, можно обсудить).
- Прочтение этой http://ru.wikipedia.org/wiki/Прокрастинация статьи из википедии и наличие ответа на вопрос "а нафиг мне это надо?" в рамках категории "важных и несрочных" дел. Мне этот ответ сообщать не обязательно, важно чтобы вы сами его знали.

Нестуденты, у которых в жопе играет детство и руки чешутся что-нибудь написать (т.е. чуваки вроде меня самого) тоже приветствуются. Требования те же.
>> No.13263 Reply
File: 1229523272308.jpg
Jpg, 94.39 KB, 668×758 - Click the image to expand
edit Find source with google Find source with iqdb
1229523272308.jpg
>>13259
> Ищю
>> No.13264 Reply
File: 125805572092278.jpg
Jpg, 574.75 KB, 1000×890 - Click the image to expand
edit Find source with google Find source with iqdb
125805572092278.jpg
Студент-математик репортирует в.
С удовольсвием бы присоединился, только вот 10 часов в неделю не найду (тем более что параллельно с уже запущенным проектом) и не знаю нихуя, хотя желание есть.

Не-дочитавший-hsof-кун
>> No.13273 Reply
File: 10732896.jpg
Jpg, 170.13 KB, 600×1381 - Click the image to expand
edit Find source with google Find source with iqdb
10732896.jpg
Заинтересованный студент-3-курс в треде.
Свободного времени дохуя. С хаскеллем я играюсь около года, но без фанатизма.

Фейкомыло "на скооперироваться" - M8R-b5pgfe@mailinator.com
>> No.13275 Reply
Куклотюня, ты? Можешь в личку на sql.ru написать, ник ZyK_BotaN

И вообще, заходи к нам почаще, смотри какие кадры есть:

http://www.sql.ru/forum/actualthread.aspx?bid=16&tid=867150&pg=5

Это у вас на имаджбордах все прожжёные, а у нас погляди-ка какой паноптикум водится.
>> No.13287 Reply
ого, сколько народу откликнулось. Надо будет тоже продумать роадмап и понабирать себе рабов.
>> No.13345 Reply
вы там хаски по-полной обмазываетесь или так? потому что dslей для js понаделали все кому не лень.
>> No.13346 Reply
>>13345
конечно понаделали. Потому что жс - это такой web-ассенблер.
>> No.13349 Reply
Надо же, сколько желающих прыгнуть с парашютом.

>>13264
Если уже делаешь проект, то лучше сначала его до ума доведи. Законченный лучше незаконченных.
>>13273
Ок, надо подумать, какую пользу ты сможешь извлечь из этого проекта. В нём использованы GADT-ы для типизации на уровне AST-а. В принципе, это интересно, но курсач из этого не сделать, т.к. весь ресёч уже выполнен и либа написана (фактически, осталась только обычная кодерская работа). Возможно, получится использовать его, чтобы освоиться с прикладным использованием GADT-ов, пройтись по ссылкам отсюда: http://en.wikipedia.org/wiki/Generalized_algebraic_data_type, посмотреть открытые проблемы (осторожно, некоторые могут быть очень сложными) и найти там что-нибудь, из чего можно сделать курсач, который потом получится развить в дипломную. Напишу на мыло, когда решу вопрос с хостингом проекта.
>>13275
> И вообще, заходи к нам почаще, смотри какие кадры есть
Лучше вы к нам, если я буду тролололить еще один форум, у вообще времени ни на что полезное не останется. Напишу, когда решу вопрос с хостингом.

По хостингу. Подумываю захоститься на http://www.patchtag.com/. Там darcs, wiki и куча хаскеллистов (главным образом из-за darcs-а, хочется на собственном опыте узнать, почему разработчики GHC от него отказались ;) Но там нет багтрекера. Т.е. придется либо вести багтрекер отдельно (где?), либо фигачить задачи прямо в вики (благо их немного). Начать готовить рабочее место планирую в эти выходные. Правда я улетаю в воскресение, поэтому до понедельника могу не успеть. Пока буду рад любым советам относительно места для хостинга, может быть кто-нибудь отговорит меня от patchtag-а.

По времени. Как уже написал, планирую выделять ~10 часов в неделю. Хотя возможно стоит сбросить до 8, как пойдёт. С 4 по 13 я не работаю, использую это время, чтобы стартануть проект. Далее около месяца плану: 8-10 ч. Где-то через полтора-два месяца хочу пойти на AFF (если ВПП не размоет), к этому времени планирую иметь рабочую версию, которую можно выложить на Hackage и остановить разработку (т.к. времени уже не будет, да и надоест).

красочная_картинка_из_японского_мультика.джпг
>> No.13351 Reply
File: lolkittehs.jpg
Jpg, 37.73 KB, 495×336 - Click the image to expand
edit Find source with google Find source with iqdb
lolkittehs.jpg
>>13259
Студент-математик 5 уровня репортинг ин. В хаскелль почти не умею, но очень хочу научиться, в веб умею, в Unix шарю. Нужен?
>> No.13355 Reply
>>13349
Патчтаг редиректит на EveryDNS. Надежный хостинг, хуле.
Багтрекер могу порекомендовать с гуглокода - простая и удобная штука без выебонов. Код там держать необязательно.
>> No.13356 Reply
>>13355
С первым сентября:
[quote]
Dyn Inc. plans to discontinue all EveryDNS services as of August 31, 2011, and is requesting current EveryDNS users migrate to the Dyn system.
[/quote]
Луркочка, кстати, тоже не работает. Думаю скоро исправят.
>> No.13372 Reply
>>13355
Вот еще какой няшный issue tracker есть: http://lighthouseapp.com
>> No.13373 Reply
>>13349
а почему бы не попробовать redmine?
>> No.13393 Reply
>>13373
Можно. Он захостен где-нибудь?
>> No.13422 Reply
> HJavaScript - исправление фактических ошибок в притти-принтере - приоритетно.
Как ты это тестить собрался?
>> No.13623 Reply
File: 90515597b2044be505b235d4e35a2aba.jpg
Jpg, 147.54 KB, 700×569 - Click the image to expand
edit Find source with google Find source with iqdb
90515597b2044be505b235d4e35a2aba.jpg
Во-первых раздуплился Gershom Bazerman (автор jmacro). Мы с ним договаривались, что я напишу кастомный валидатор регулярок для js и отвяжу его либу от pcre-light. Чем я и займусь в ближайшее время. Парень он жесткий, поэтому этот такс я делегировать не буду.

По HJScript и HJavaScript. Будем хостить на patch-tag пока без багтрекера. Задач не так много, можно вбивать прямо в вики. Вики еще не сделал, когда сделаю (после jmacro) скину ссылку всем, кто оставил контактную информацию. Задачи можно будет брать любую задачу, какая больше нравится, и делать её (желающим будут даны соотв. права на доступ к репозиторию). Единственное требование - обязательное ревью задач, связанных с кодингом. Т.е. без ревью задача в статус "выполненные" не переходит. Надеюсь меня тоже кто-нибудь поревьювит ;)

Пока чтобы не было скучно, пара задачек, не требующих доступа к коду:
1. Получить список библиотек, использующих HJScript и HJavaScript. Нужно для контроля качества - крайне желательно, чтобы после наших измененеий все они продолжили нормально работать с новой версией. Как получать - без разницы, можно попарсить выхлоп cabal-а, можно залезть внутрь и разобраться как он работает, можно еще как-нибудь. Если кто-то решит это делать, пишите прямо сюда, потому что я займусь ею как только заполню wiki.
2. Подумать над составом модулей HJScript. Задача - добавить туда модуль для поддержки Canvas. Сейчас там два пространства имён: HJScript.DOM - для элементов DOM-а, и HJScript.Objects для прочих объектов. Canvas сосоит из элемента <canvas> и нескольких интерфейсов: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html Надо подумать, как это грамотно вписать в существующую модель, чтобы это было юзабельно и не надо было импортировать кучу модулей.

Вопросы по языку, архитектуре библиотек, инструментам.. возникать непременно будут. Сейчас можно спрашивать здесь, потом можно будет создавать обсуждения на вики. На все вопросы я ответить не могу, т.к. сам многого не знаю, не стесняйтесь спрашивать в haskell cafe если что.
>> No.13625 Reply
>>13623
> 1. Получить список библиотек, использующих HJScript и HJavaScript.
Там одно hsp все это и использует ( http://paste.org.ru/index.pl?i1wnz3 ).

Как смотришь насчет того, чтобы написать read :: String -> HJavaScript и погонять HJavaScript на различных жс-библиотеках, ну чтобы проверить претти принтер, да и вообще чтобы было на чем тестить.
>> No.13627 Reply
>>13623
1. Только hsp. Парсить ничего не надо, grep уже изобрели.
2. Юзабельно вписать это в текущую модель не получится потому, что текущая модель сама по себе нифига не юзабельна. Как вариант можно вынести canvas со всеми интерфейсами в отдельное пространство. Вместе со своим типом DOM-ноды и всем-всем-всем, что нужно для рисования на канвасе и нахрен не нужно для других задач.
>>13625
Различные жс-библиотеки вовсю используют прототипы, чего HJavaScript не умеет и наверное никогда уже не научится.
>> No.13632 Reply
Стасик, расскажи, где почитать доступно и с примерами про все эти LANGUAGE прагмы?
>> No.13634 Reply
File: 1308833588713.jpg
Jpg, 1399.10 KB, 1500×1900 - Click the image to expand
edit Find source with google Find source with iqdb
1308833588713.jpg
>>13632
http://www.haskell.org/ghc/docs/7.2.1/html/users_guide/ghc-language-features.html
http://hackage.haskell.org/trac/haskell-prime/wiki/HaskellExtensions
Если нужна более подробная информация по какому-то расширению - смотришь статью на
http://haskell.org/haskellwiki/Haskell и читаешь соответствующие пейперы по ссылкам.
>> No.13665 Reply
File: 5acd1086f70209050c5b8c7ade3842b8.jpg
Jpg, 744.44 KB, 1000×1070 - Click the image to expand
edit Find source with google Find source with iqdb
5acd1086f70209050c5b8c7ade3842b8.jpg
Нафигачил валидатор регулярок по стандарту Ecma262, но не разобрался с СlassRanges (там что-то типа BFN, а в парсеке что-то типа PEG, поэтому если переводить дословно, то фигня получается). Еще в стандарте помимо синтаксиса описано как строить матчер и какие при этом кидаются синтаксические ошибки. Не знаю делать это или нет.. Вот, пока так: http://hpaste.org/51112. Завтра подумаю, что с этим делать. На посты тоже завтра отвечу, никто же никуда не торопится?
>> No.13666 Reply
File: 19458878.jpg
Jpg, 203.04 KB, 750×750 - Click the image to expand
edit Find source with google Find source with iqdb
19458878.jpg
>>13665
Нда, что-то я туплю. Как превратить BFN в PEG? Въебать левую факторизацию позабористей? У меня щаз [a--z] валидируется, что, в принципе, нормльно с точки зрения синтаксиса потому что: nonemptyClassRanges -> classAtom - classAtom classRanges -> classAtomNoDash - - nonemptyClassRanges -> sourceCharacter - - classAtom -> a - - classAtomNoDash (ну и для него как раньше) -> a - - z, а реальный regexp такое не ест. Получается ошибка на этапе построения матчера? Не, надо спать валить.
>> No.13672 Reply
File: cup-of-rage.jpg
Jpg, 155.71 KB, 340×444 - Click the image to expand
edit Find source with google Find source with iqdb
cup-of-rage.jpg
>>13351
Оп, спасибо, что хотя бы отписал о том, что я не нужен, няша
>> No.13778 Reply
>>13672
Няш, я такого не писал. Я вообще не собираюсь тут судить, кто нужен, а кто нет, я просто выставлю открою проект, и кто захочет, пусть участвует. Если кто-то захочет, но у него будет недостаточная квалификация, как я сказал, я буду отвечать на вопросы и помогать. Просто я еще нихуя не сделал в данный момент делаю валидатор регулярок для jmacro, спецификация к питушковому языку такая питушковая, т.к. все некоммерческие проекты мееееееедленные:) Ну да, я только вчера в Москву прилетел и только сегодня на новую работу вышел. Там интернет онально огорожен, девайс-лок и даже доступа к диску C: нет :( Поэтому пока тут обсуждаем общие вопросы, это не напряжно ни мне ни вам.
>>13632
Тащем-та http://www.haskell.org/ghc/docs/latest/html/users_guide/flag-reference.html (4.19.12. Language options) но в 90% он сам тебе скажет, что добавить. Не скажет про NoMonomorphismRestriction но я бы был с ним поосторожнее, скажет про MultiParamTypeClasses, но это адское зло, за CPP вообще надо бить ногами, остальные сомнительно.. Ах ну да, GADTs - хорошо (вроде всё то же можно сделать на TypeFamilies, но GADTs очень удобен); TypeFamilies - маст хев; MagicHash - можно, если решил побайтоёбствовать (бастойбство в Хаскелле плохо сделано, в сишечке лучше); OverloadedStrings туда же (с повсеместным внедрением ByteString стало очень полезной опцией, но батстринги - это фейл, осталось только мусоросборник отключить и сделать из хаски сишечку); KindSignatures - хороший, годный посыл в сторону кайнд-левел программирования, к сожалению пока ни кем не развиваемый, но потенциально позволяющий хаски догнать по гибкости ГI5b, причем не прибегая к template haskell. Например: на Хаскелле нельзя сделать аналог лисповской mapcar в чистом виде. Потому что она полимофна по кайнду применяемой функции. NoImplicitPrelude - мега-тру, для самых Ъ-хаскеллистов, которые угорают по хардкору, только numeric prelude, только хардкор, только теория категорий. Включение NoImplicitPrelude прибавляет 8 очков к твоей трушности, даёт тебе право называть всех программистов на sql.ru - быдлокодерами, а также пиздить у папки золотую яву и курить её в подъезде между вторым и третьим этажом. По остальным смотри сам. FlexibleContexts/FlexibleInstances/OverlappingInstances как правило сигнализируют о том, что у тебя слишком уж сильные заёбы на тайпклассах (может стоит сделать попроще), EmptyDataDecls - простой синтаксический сахар.
>>13625
> Как смотришь насчет того, чтобы написать read :: String -> HJavaScript и погонять HJavaScript на различных жс-библиотеках
Не вижу смысла писать парсер js. В принципе парсер js есть в jmacro, но он там нужен, чтобы парсить TH. И сделан он не по ECMA (используется встроенная парсековская поделка) и не под ECMA, а в качестве парсера кастомного язычка, похожего на JS. HJScript и HJavaScript - бэкэнды в чистом виде. Генерировать JS из них - пожалуйста, парсить JS в них - даже не могу себе представить, зачем такое может понадобиться. Как генератор я его тестил, когда делал бэкенд к diagrams. Разумеется, он не интересен, был бы интересен бэкенд к каким-нибудь параметризованным диаграммам (т.е. код, генерирующий джаваскрипт, рисующий диаграммы на основе параметров, получаемых с некого онлайн-сервиса в реальном времени), это было бы ближе к жизни. Можешь придумать такой, если есть желание и время.
>>13627
> Только hsp.
Как думаешь, есть ли смысл заморачиваться за совместимость с ним?
> Юзабельно вписать это в текущую модель не получится потому, что текущая модель сама по себе нифига не юзабельна.
Предложения? Можно сделать так же как с парсеком-3 - переэкспортировать все имена в новые модули в юзабельном формате. Разумеется, если ты знаешь, как это сделать более юзабельно.
> Различные жс-библиотеки вовсю используют прототипы, чего HJavaScript не умеет и наверное никогда уже не научится.
Можно чему угодно научить, разрешение есть:) Дай конкретный пример.
>> No.13810 Reply
>>13778
Если легаси можно не поддерживать, его лучше не поддерживать. Поломать совместимость, если надо, и починить hsp. Тем более, что его делали те же люди, что и JMacro - могут принять патчи одновременно, никто не пострадает.
> Можно чему угодно научить
Может тогда уж и динамической типизации? Чтобы получился точно такой js, только с приподвывихнутым синтаксисом.
Я думал суть в том, чтобы транслировать псведо-дсл на хаскелле в некоторое подмножество жабаскрипта. Использовать для этого все возможности столь сгущёночного языка даже вредно. Лучше подумать над человеческим лицом HJScript, чтобы его было не так страшно использовать.
>> No.13842 Reply
>>13810
> Тем более, что его делали те же люди, что и JMacro
HJscript ты хотел сказать..
> Может тогда уж и динамической типизации? Чтобы получился точно такой js, только с приподвывихнутым синтаксисом.
Всё это уже есть в JMacro. HJscript я рассматриваю как бэкэнд для различных высокоуровневых DSL-ей. В идеале хочется DSL для визуальных элементов (что-то типа фуджетов, может быть), которые берут данные с сервера и отображают их. И да, HJavaScript в общем-то достаточно "динамичен". Ограничения накладываются в пользовательском коде. Пожалуй, единственная проблема - это фиксированное количество аргументов функции. Но если очень хочется, это тоже можно подкрутить, правда я не вижу в этом серьёзной необходимости и не уверен, что это будет нормально смотреться в Хаскелле.
>> No.13870 Reply
Прочитал пока только оп-пост. Есть желание присоединиться. Но я работаю и по учёбе есть дела, поэтому прочитаю тред, подумаю, нужно ли мне, и через неделю-две свяжусь.
Скинь пока почту/телефон на bydlo666@ya.ru
>> No.13871 Reply
>>13870
Ой блядь я слоупок. Тред уже почти 3 недели висит.
>> No.13872 Reply
>>13871
Хотя вы ещё не стартанули, так что всё норм :3
>> No.14309 Reply
Посоны, чё тормозим?
>> No.14326 Reply
>>14309
Не тормозим. Лениво вычисляемся.
>> No.14362 Reply
>>14326
> Не тормозим. Лениво вычисляемся.
Напомнило http://ro-che.info/ccc/11.html
>> No.14520 Reply
File: 1250104888245.jpg
Jpg, 36.13 KB, 380×380 - Click the image to expand
edit Find source with google Find source with iqdb
1250104888245.jpg
BUMP ленивым мразям
>> No.15358 Reply
Вечеринка отменяется?
>> No.15362 Reply
>>15358
А ты прям думал, что хачкибляди умеют что-то отличное от заглатывания тунцов.
>> No.15363 Reply
File: 1242326782563.jpg
Jpg, 86.07 KB, 600×571 - Click the image to expand
edit Find source with google Find source with iqdb
1242326782563.jpg
>>15358
Да, пока решил отменить. Я немного ковыряю хаскифремворки самостоятельно по выходным (сейчас happstack-auth, например) но там нет абсолютно ничего интересного, ради чего стоило бы привлекать людей, один тупой багфиксинг. Впрочем, если удастся дотянуть проект до того уровня, чтобы это стало интересным (например, какая-нибудь исследовательская работа), я сброшу информацию сюда или на нульч.
>> No.15409 Reply
File: b_2.png
Png, 10.40 KB, 231×176
edit Find source with google Find source with iqdb
b_2.png
File: No-u.jpg
Jpg, 39.26 KB, 369×418
edit Find source with google Find source with iqdb
No-u.jpg

>>13259
скоко платишь?
>> No.15410 Reply
>>15409
Простите, я один вижу слово "бесплатно" в ОП-посте?


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]