Just do it

Jun. 1st, 2022 11:59 am
recoder: (Default)

Практически в каждом софтверном проекте, где участвуют более одного участника, или даже один разработчик но с памятью как у меня, рано или поздно встаёт вопрос документирования процессов: как компилировать, как запускать, как тестировать, как настраивать, и т.д. Так рождается файлик HOWTO.md.

Read more... )

И я нашёл замечательный инструмент под названием just. Ставится одной командой curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to ~/bin (если конечно не бояться curl-pipe-bash). С виду он похож на старый добрый make: есть текстовый Justfile, в котором хранится именованный список рецептов. Однако в отличие от make, тут нет никаких подкапотных проверок - все зависимости между рецептами явные. И сами рецепты не обязательно последовательности шелл-команд, они могут быть написаны на любом языке (хоть на TinyC с указанием #!/usr/local/bin/tcc -run). И есть ещё куча мелких особенностей, делающих just особенно удобным: рецепты умеют принимать аргументы, есть автоматическая загрузка переменных окружения из .env, внутри есть несложная поддержка переменных и функций, всё очень прагматично.

Теперь в своих проектиках я могу просто написать just build или just start.

recoder: (Default)

Чудна и непредсказуема жизнь вообще и программерская карьера в частности.

Судьба — коварная штука. Как только у тебя в руке собираются четыре туза, она решает сыграть в шашки.

Только я разобрался с современным C++, дождался пока вся контора соберётся двинуть на С++17, заархитектурировал взамен замшелого PoСo свою собственную мега-библиотеку (свободную от всяких фатальных недостатков)... как внезапно судьба забрасывает меня в облака, где эта плюсовая изысканность нафик никому не сдалась.

Штош, поскребли по мозговым сусекам, закатали рукава, и выкатили новые облачные сервисы на Питоне. Неожиданно выясняется, что у Питона имеется фатальный недостаток (и это вовсе не GIL) и чтобы все сервисы были в ажуре (pun intended) - надо срочно всё переписать на C#.

Штош, пришло время откопать стюардессу в виде десяти лет опыта программирования на Java и вспомнить как выглядит энтерпрайзное программирование. Обложился умными книжками и руководствами из интернетов, полистал примерчики...

В целом оказалось что всё совсем не так уж плохо. Microsoft сделал из Java вполне себе неплохой язык, на котором можно программировать без отвращения. Язык вышел структурированный, но при этом очень прагматичный. В смысле - если нужна фича, которая упрощает программистам жизнь - то её впилят даже если при этом придётся немного подогнуть концептуальные рамки. В этом есть конечно и минус - когда язык быстро (не как vlang конечно) эволюционирует, не всё окружение успевает за ним. Я вот до сих пор не могу окончательно вкурить онтологическую разницу между Task и ValueTask. Ну и весь LINQ пока в голове не помещается. Спасает то что у остальной команды тоже пока что не вся спецификация всосалась, а там на горизонте уже C#11 появился...

Также очень по жизни помогают JetBrains Rider для сверхзвукового рефакторинга и Copilot для внезапных мистических озарений. Отлично зашли Fluent Assertions для написания красивых тестов. Хотел ещё мутационное тестирование попробовать, но пока сил не хватило.

В общем, напрасно я опасался - I am not too old for this shit.

recoder: (Default)

Несколько лет назад один латвийский программист Pēteris Caune написал гениальную в своей простоте систему мониторинга интернет-сервисов HealthChecks.io: каждый сервис раз в определённое время должен прислать уведомление "я ещё жив", а когда уведомления перестают приходить - владельцу приходит предупреждение. Работает отлично, успешно мониторит мой домашний сервер. Рекомендую.

Но жизнь - штука чудесатая...

В начале этого марта известный паралитик-программист Иван Бакаидов перенёс концепцию "пингов жизни" на людей и запилил телеграм-бота mystatusok, который за вас будет беспокоить ваших друзей и близких вопросом "всё ли хорошо?" и уведомлять когда адресат вдруг перестанет выходить на связь.

Modern problems require modern solutions.

recoder: (Default)

Сколько себя помню занимающегося программированием - всегда мимо ходил менеджер, который бормотал "ну ничего, скоро мы вас всех заменим автоматизированными системами", а я на это посмеивался в усы. Ну чего взять с менеджера?

Приходили и уходили блок-схемы и UMLы, случился повальный outsourcing и расхлёбывание его последствий, из-за каждого угла замаячили "no code" системы. А я всё ещё посмеивался в усы, и был уверен что нас-то, профессиональных индустриальных магов, никто никогда не заменит.

А недавно я поставил себе GitHub Copilot - плагинчик к редактору кода с неонкой нейронкой унутре, который умеет за тебя писать код. Вот прямо берёт и продолжает за тебя код, практически читая твои мысли. Код не всегда получается в моём стиле, да и не всегда получается корректный, но зато когда получается - то продуктивность в единицу времени получается прямо-таки зашкаливающая. И тут я понял, что вот это - настоящая боевая магия. Вот оно, будущее прямо сейчас! Кто же мог подумать что миллиард мартышек не смогут написать Войну и Мир, а триллионы цифровых нейронов - смогут?!

Не думаю, что мне с моим программерским опытом стоит опасаться шибко умных нейронок. Качество их результата в среднем находится где-то на уровне не самого умного copy-paster'а из StackOverflow и без творческого переосмысления пойдёт разве что на двадцатипрцентные прототипы. Однако самих начинающих кодеров (типа прочитавших "Python за 21 день") такой инструмент вполне сможет заменить, не сегодня - так завтра. И какой эффект это произведёт на ландшафт программерских рабочих мест - мне даже сложно представить.

В интересные всё же времена живём!

recoder: (Default)

Как известно, программист - это такой работник умственного труда, который на работе старается спрограммировать всё побыстрее, чтобы наконец пойти домой и попрограммировать для удовольствия. А как же тут попрограммировать для души, когда домашний игровой комп сыграл в ящик, не гудит и не мигает лампочками? Пришлось выделить из семейного бюджета солидную сумму на покупку нового компа в серьёзной конфигурации: Ryzen 7, RTX видеокарта, 32G памяти, все дела.

Прошло несколько недель (COVID всё же на дворе), и настал светлый день. Уставший FedEx'овец в маске дотащил здоровую коробку, и не спрашивая росписи о доставке, умчал вдаль шурша опавшими листьями. Коробку распаковали, комп собрали, подвели питание, включили - он загудел, засверкал светодиодными лентами через боковое стекло. Красота!

Тут меня начал мучать соблазн - ну что я, не настоящий программист что ли? Не пропадать же такой вычислительной мощности только для вечерних загонялок в Doom! Надо поднять нормальную Linuxовую виртуальную машину для разработки, а может даже и несколько, чтобы сделать себе devel, staging, и production.

Выключил комп, засел с блокнотиком, долго изучал опыт современных домашних умельцев в интернетах. И в следующий раз включил комп только когда в блокнотике появился удовлетворительный дизайн домашнего сервера.

Теперь буду записывать себе на память инструкции по поднятию домашней системы:

Дальше не-программистам можно не смотреть )

После этого можно удовлетворённо попить чайку и переходить к следующей стадии.

recoder: (Default)

В наше цифровое время я отчаялся даже бежать изо всех ног чтобы только оставаться на месте, применяя опыт Алисы в Стране Чудес к волшебному миру современных фреймворков и языков. Но сейчас совсем весёлые времена настают, когда новые языки высасывают из пальца не только шизофреники, маньяки, и гуглеры, но и вообще каждый встречный-поперечный норовит скомпилировать какую-нибудь нетленку на коленке.

А недавно вот совсем весёлая история случилась. Год назад пришёл на HackerNews чувак по имени Сашок Медведников и сказал "я тут типа замутил новый язык типа Go, только проще, удобнее и быстрее и назвал его Ы, в смысле - V, чтобы никто не догадался". Местные хакеры-старожилы быстро наваляли ему "комплиментов", и попросили подтвердить столь смелые заверения открытым репозиторием на GitHub'e.

Чувак засучил рукава, поднапрягся и через месяц выкатил почти все исходнички на GitHub. Старожилы удивлённо крякнули и начали по-стариковски гундеть что, мол, зачем нам N-плюс-первый язык, когда у нас ещё Lisp не сносился, зачем нам опять мозгами скрипеть, мы тут только-только Rust выучили, зачем опять ждать декаду пока найдётся герой, который стандартную библиотеку к новому языку напишет, и т.д.

Чувак надел геройский плащ и начал каждый месяц релизить эпохальные фичи. Наваял приличную стандартную библиотеку. Слабал пакетный менеджер. Добавил встроеный ORM. Написал веб-фреймворк и сразу переписал на нём свой собственный форум поддержки. По приколу написал транслятор из C/C++ в V и перекомпилировал классический Doom. Добавил пару библиотек для работы с 3D. Кросс-платформенный UI фреймворк не так давно появился. Хакерское сообщество взирает на происходящее с изумлением...

Как по мне, так язык в общем-то вышел довольно неплохой, хоть и не в моём вкусе. К сожалению, он на Go похожий, но и на таком тоже писать можно. Народ же пишет. А вот что дальше будет - непонятно...

А я думаю - пойти что ли поглазеть на все эти новые языки: Crystal, Pony, Zig, Nim, Wren, C++23.

recoder: (Default)

Гениальный Фейнман в своей книге описывал занимательную историю о строительстве первых ядерных очистных установок. Ему, молодому специалисту, приносят на обзор свежий проект обогатительного завода - пачку синек со схемами накопителей, клапанов, труб и насосов. Офигевший от безумной сложности увиденного, Фейнман тыкает пальцем в один из таинственных крестиков и спрашивает "а что если этот клапан заклинит?". Инженеры смотрят на синьки, водят пальцами по линиям труб, и изумлённо произносят "всё ж накроется нафик! вы просто гений, мистер Фейнман!"

Мораль этой байки в том, что в достаточно сложной системе критически важных компонент больше чем безопасных.

Вот и в своей работе мне часто приходится так же делать code review. Приходит review request на что-то заумное, в чём фиг разберёшься за пятнадцать минут, а пол-дня тратить на чужую работу - жаба душит. Докапываться до стилевых несоответствий я себе не могу позволить - я ж не менеджер какой. Поэтому - выбираю самый непонятную строчку, и пишу комментарий что в этом месте что-то нечисто. И как правило, в этом месте действительно оказывается нечисто. Ибо, если всё непонятно - значит критических мест в коде больше чем надёжных.

Есть правда и небольшая тонкость - надо всё-таки чувствовать "куда надо бить молотком", за это нам и платят нашу зарплату...

Magic

Jan. 19th, 2017 11:24 am
recoder: (masked)

Any sufficiently advanced technology is indistinguishable from magic.
© Arthur C. Clarke
Не в первый раз слышу в программерских кругах обсуждения "магии" в разных местах: в языках, во фреймворках и библиотеках, и т.д. И каждый раз мне хочется встрять в это обсуждение и рявкнуть: в программировании магии нет!

Программистское брюзжание )

JSON APIs

Nov. 14th, 2016 07:53 am
recoder: (Default)

А подскажите мне, коллеги-программисты, какой нонеча самый кошерный способ правильно описывать HTTP APIs? Ну вот так, чтобы свой обычный REST JSON API, описать его один раз и чтобы дальше всё само получилось: документация, клиенты для скриптовых (и не только) языков, какой-нибудь online playground, и всё такое?

Мы в нашей конторе пять лет назад, когда внедряли REST, ничего зрелого и толкового не нашли, и поэтому запилили свой велосипед: Sleepwalker. Это потом бурным цветом расцвели RAML, Swagger, WADL и прочие, а у нас уже наросли кучи полезного code base.

Вот я и думаю - если бы новый проект начинать сейчас, то что бы следовало взять за основу? Там же только на первый взгляд всё несложно, а чуть углубился в детали - и из-под каждой по дьяволу мерещится. А вдруг хочется поддержать не только JSON, а например ещё и XML? А если захочется какой-нибудь CSV или вообще blob наружу выдать? А как ошибки документировать? А как HTTP errors пересекать с ошибками приложения? А как bulk-операции реализовывать? И прочее, и прочее, и прочее...

С другой стороны - у всех же разработчиков должны быть точно такие же общие проблемы (даже если они их не замечают). А значит и общие решения должны быть, и на исходе 2016-го года они уже должны были выкристаллизоваться. Так и где же они?!

coding

recoder: (Default)

Случилась тут у нас на работе загогулина. В процессе декомпозиции всех наших проектов на микросервисы решили мы воспользоваться шансом и поотпимизировать что можно. В частности - решили поменять JSON парсер, а то он у нас был самодельный, с поддержкой XML и хитрой валидации, но зато несовместимый ни с чем.

Пошли профайлить плюсовые JSON парсеры. Потыкали boost с его свойственными деревьями - оказалось на удивление медленно, причём и в компиляции и в рантайме. Посмотрели на Poco::JSON - более менее фурычит, хотя звёзд с неба и не хватает. Пошли смотреть что ещё бывает в современном мире C++...

А потом по приколу прогнали Python парсер на тех же тестовых данных. И тихо офигели: мерзкий питон уделал наши крутые библиотки в несколько раз. Проверили в разных аспектах - всё верно, питон быстрее плюсов. Даже для эксперимента вызвали из плюсов питоновский парсер - и он всё равно летает.

Как теперь жить с этим знанием? Переписывать всё нафик на Питоне? Таскать везде с собой кусок питона? И самый главный вопрос - как вообще такое могло получиться?!

coding

recoder: (Default)

Сижу, изучаю очередной JavaScript-фреймворк. На этот раз YUI3. Раньше приходилось покопаться в Dojo, была задача за пару месяцев изучить ExtJS (aka Sencha) и пописать на нём. И всё это время одолевает меня один вопрос-непонимание...

И нет, этот вопрос отнюдь не "Ну почему же универсальным языком интернетов оказался этот ужасный монстр?" У нас, программистов, ответ "так исторически сложилось" подходит почти к любому вопросу. Ладно... Я другого не понимаю.

Каждый серьёзный фреймворк начинается с того, что вводится своя система классов, свойств, модулей и пр. Почему? Потому что на голом JS писать большие системы так же удобно как на ассемблере и вообще "см. рис.1." Потом поверх этой системы наворачиваются всякие паттерны, на которых строятся MVC, виджеты и всё остальное. Причём шаг влево, шаг вправо от этих паттернов - и всё начинает становиться раком в самый неподходящий момент (поскольку язык динамический и никаких compile time checks нет и вообще "см. рис.1.").

И вот я не понимаю - почему ни один фреймворк не вводит свой скриптовый язык, компилирующийся в JavaScript. Чтобы в этом языке были зафиксированы все специфические концепции конкретного фреймворка. И тогда программист не будет заморачиваться на поиск незамеченных искажений паттернов, а будет заниматься собственно решением своей насущной задачи.

Делов-то: взять, скажем CoffeeScript, форкнуть его и допилить немножко. Радикально было бы адаптировать какой-нибудь Haxe или Elm. Но практически хватило бы даже минимальной кодогенерации в JavaScript. А никто не делает!

Впрочем - выяснилось, что я немножко вру. Таки-есть один скриптовый язык, заточеный под Ember.js (Иуда рулит!) - EmberScript. Тем более непонятно, почему другие серьёзные игроки в эту сторону не смотрят. Занимался бы я UI так, как занимался десять лет назад - точно бы учудил такую надстройку к ExtJS. А сейчас - нет, лучше пойду свою REST-систему на C++ допиливать...

coding

recoder: (Default)

Люблю в своей профессии периодически обнаруживать маленькие бриллиантики программерской мысли, заставляющие удивлённо вздыхать, приговаривая "как же это никто раньше не додумался-то?". программерское чтиво )

Ну разве это всё не красота?!

coding

recoder: (Default)

Коллеги интересуются, что в конце концов случилось с идеей написания веб-сервиса на плюсах. Спрашивали - отвечаем!

Сугубо Программистское )

Резюмируя, скажу что для человека с интеллектом ничего невозможного нет. И своим результатом я вполне могу гордиться. Однако всё это время где-то глубоко в душе было ощущение бега по таёжной чаще параллельно широкой автотрассе...

coding

recoder: (Default)

Возникла идея в рабочей системе вообще отказаться от интерпретируемых языков. Статику отдавать через Apache, клиента сделать на статическом JavaScript, а динамику отдавать через FastCGI из своего C++ приложения в XML/JSON.

В теории идея выглядит вполне работоспособной. Однако мысль о том, что придётся переизобретать маленькую роту велосипедов, которые в Rails/Django вылизывались годами, меня очень смущает. Гугление уже существующих решений (и их обсуждений типа - раз два три четыре) дало такие примеры:

CppCMS: похоже, довольно полная библиотека для написания приложения. Всё как у взрослых: кое-какие routes, контроллеры, темплейты+views+шкуры и всё прочее. Немного смущает что, как и другие фреймворки, у них свои строки, массивы и прочие базовые классы. Но в целом - кажется приемлемо.

Wt: любопытная widget-ориентированная библиотека для написания веб-систем. Оригинальная, но уж очень самобытная. А к самобытным системам ни Dojo не прикрутишь, ни программистов потом не найдёшь. Плавали - знаем.

TreeFrog: похоже на попытку аккуратного портирования Rails на плюсы, но результат непонятный: проект молодой, документация почти несуществующая.

ffead: занятная штука, судя по всему написанная сумасшедшим Java-программистом, который почему-то начал писать на C++. Посмотреть конечно прикольно, но не брать же это в production.

CPP SERV: уже другие безумные Javaнцы переписывали на C++ - на этот раз servlets. Однако года три назад вылечились и бросили это дело.

Есть ещё кучка библиотек помельче для разработки мини-сервисов: Klone, PoCo, NanoGear, REST CGI. Но с ними опять придётся выстраивать собственно архитектуру с самого начала. А не хочется.

Выходит, особенного изобилия веб-приложений на C++ не наблюдается. И начинают закрадываться сомнения - может быть, миллионы мух не могут ошибаться, тысячи программистов уже пробежали этот марафон по граблям и разбрелись кто куда?

Вот, сижу теперь, думаю... Записываться в экстремалы с такой системой или плюнуть и откопать PHP?

coding

recoder: (Default)

Вялотекущие архитектурные изыскания вышли в стадию активного прототипирования клиентской части. Очень хотелось найти JS-фреймворк, одновременно предоставляющий достаточный уровень абстракции над DOM, единообразную поддержку разных событий, средства моделирования данных (чтобы не возиться с прикручиванием Backbone, Knockout и прочих), инструменты для разработки UI-компонент и обладающую уже готовым набором этих компонент. Искать пришлось довольно долго.

Довольно быстро с дистанции сошли SproutCore (который теперь Ember), Qooxdoo, dHTMLx, SmartClient, Rico. Туда же пошли монстры вроде AppCraft.

В финал вышли: jQuery UI, ExtJS, Dojo и YUI3. Отбросил YUI3, потому что где будет Yahoo даже через полгода - совсем непонятно, плюс даже третья версия показывает признаки старости. jQuery UI выглядел неплохо, но разработка его как целого тулкита у меня вызывает лёгкое недоумение (они там похоже простое дерево третий год пишут). ExtJS, особенно четвёртая его инкарнация, очень хорош, однако его лицензионные заморочки настораживают даже меня (а что скажут юристы?!). И остался Dojo Toolkit.

Программистское про Dojo Framework )

Резюмируя, в общем Dojo мне понравился и, если не наткнусь на что-то совершенно фатальное, буду строить UI именно на нём. Если у кого будут вопросы по Dojo - приходите обсуждать на ХэшКод или на StackOverflow.

coding javascript

recoder: (Default)

Гуманитарным складом ума обычно называют отсутствие математического.
bash.org.ru
Наткнулся намедни на Hacker News на ссылочку на старую статейку Джеффа Этвуда под названием "Separating Programming Sheep from Non-Programming Goats". Где он действительно пишет о том, как отделять способных к программированию агнцев от неспособных к нему козлищ.

Я-то давно подозревал, что некоторые подобно дальтоникам не чувствуют разницу между хорошим кодом и плохим. А оказывается всё ещё глубже и проще. Просто некоторые от природы умеют строить в голове абстрактные модели, а некоторые нет, причём процесс обучения на этот расклад мало влияет. Более того - ещё до начала обучения всех учеников можно довольно точно поделить на эти группы по результатам очень простого теста, вопросы которого выглядят примерно так:

Супер-вопрос на $1000000 )

Нам, программистам, ответы конечно же очевидны, однако по результатам этого теста народ делится примерно таким образом: 44% формируют в голове какую-то модель устройства присваивания, 39% сделать это вообще не удаётся, и ещё 8% вообще плюют на ответы и не пишут вообще ничего. Поучительно, что когда этот тест повторили через три недели обучения, расклад на группы практически не изменился.

Получается, что довольно приличный процент учеников и студентов учить программированию просто бесполезно, у них биохимия такая! А у нас в школах все как один Basic учили (кстати, а что сейчас учат?). Зачем? Пусть лучше сидят, в Civilization играются - всё больше толку будет. Может из них потом менеджеры получатся?

Вот такая оказывается загогулина в нашем ремесле.

coding

recoder: (Default)

Поставил себе недавно производственную задачку и вот уже неделю сижу обдумываю, никак решиться не могу.

Дано: линуксовая система с жадным до памяти софтом с C++ API.

Надо: прикрутить сверху Web UI поверх Apache, чтобы всё красиво конфигурить, смотреть всякие результаты: таблично и графически, плюс сваять своё подобие портальной системки чтоб уметь строить страницы с наборами своих виджетов.

Вот и думаю - как бы всё это задизайнить правильно и с перспективой? Собственно вопрос архитектуры распадается на два связанных вопроса: 1) на чём писать клиентскую сторону? и 2) на чём писать серверную сторону?

Клиент. Есть большой соблазн взять какой-нибудь ExtJS или Dojo (или SproutCore, или dhtmlx, или SmartClient, или на базе jQueryUI что-то своё) и построить в браузере монолитное веб-приложение со всеми рюшечками. Заманчиво конечно замахнуться на такое ультра-современное решение ибо и HTML5 на пороге, веб-приложения проникают везде и повсюду, да и демки все выглядят захватывающе. Отдельный плюс - серверная компонента сокращается до тоненькой прослойки над C++ API, которую можно написать на чём угодно, хоть на C++ сделать модуль к Апачу. Однако мне кажется что риск слишком велик. Написание приложений на JS - дело относительно молодое, подходы не устоялись, API всё ещё гуляют, плюс зоопарк браузеров просто вразнос пошёл. Опять же - непонятно, где искать JS-программистов соответствующего уровня? (Да даже оценивать JS-программистов - уже задача нетривиальная!) И сколько займёт процесс изучения конкретного выбранного JS-фреймворка, даже если у него такая неплохая документация как у Sencha? В общем, технологически - амбициозно, а вот организационно - всё же рисковано.

Сервер. Здоровая альтернатива - делать всё более-менее традиционно: MVC-фреймворк на сервере, те же jQueryUI или Dojo для оживляжа страниц, и JSON/XML для транспорта. Подводных камней видится гораздо меньше, но проще всё равно не становится. Всё равно надо думать - для начала о серверной платформе. Попробуем решить задачу перебором...

Мне так кажется, что на один бокс сажать Java с другими прожорливыми компонентами - нерационально. Прожорливость + непредсказуемость GC = проблемы. Так что отпадают многочисленные Java-фреймворки (Spring, Stripes, Play, и др.), химерный GWT и JVM-based Scala (Lift) и Groovy (Grails). При всей моей трогательной любви к Perl реальных перспектив у него не вижу ни с Perl5 ни с Perl6 несмотря на Ренессанс, да и TIMTOWTDI в командной разработке не будет помогать. Так что отпадают Catalyst, Mojo, Dancer. PHP сразу нет, потому что дикая эклектика и вообще плохо пахнет. ASP - нет, потому что среда линуксовая и Microsoft сюда тянуть себе дороже.

Насчёт написания веб-компонента на C++ пока не могу даже определиться - сумасшествие это или реальный вариант. Гугление вроде бы выдаёт некоторую информацию, но стоит ли бросаться в этот омут? Наверное всё же - нет.

Итого что у нас остаётся: модный Ruby и кошерный Python. То есть Rails и что-то из Django, Pyramid, TurboGears. Rails я на зуб пробовал - мне понравилось. И общая архитектура, и инструментарий для тестирования, и динамичность сообщества разработчиков. Однако несколько смущает сам Ruby: во-первых, непонятно где искать рубистов, а во-вторых опять же может выйти TIMTOWTDI. Питоновые фреймворки руками не щупал, но верю что там тоже всё должно быть примерно аналогично (и даже более однозначно из-за the python way). Есть правда озабоченность моментом Python 2.x против Python3K... А точнее пока непонятно как сравнивать.

Так что судя по всему, придётся выбирать между Rails, Pyramid и TurboGears. Методом тыка и прототипирования.

Коллеги, веб-девелоперы - скажите своё слово, поделитесь советом, а?

coding

recoder: (Default)

По наводке френдов открыл для себя Project Euler - сайт с сотнями разнообразных вычислительных задач, которые надо решать написанием соответствующих программ. И вот уже сколько времени сижу, решаю задачки по очереди, испытывая чувство глубокого удовлетворения.

В программировании же примерно как в Зазеркалье - надо бежать, чтобы оставаться на месте, а чтобы двигаться вперёд - надо бежать ещё быстрее.

Оказалось, что решение таких несложных с виду задач - очень хороший способ изучить новый язык программирования, отполировать старые знания или попробовать новые подходы в уже изученных языках. Пока играюсь с Ruby, привыкая к более функциональному стилю написания. Если пойдёт хорошо - начну пробовать на практике свежеизучаемую Scala.

» buzz coding

recoder: (Default)

Что делать несчастному веб-программисту, связанному по рукам и ногам старыми языками разметки, представления и скриптования? Что делать, если ужасно надоели горы всякой ботвы, накопившиеся за прошедшие годы и существующие исключительно для обратной совместимости? Что делать, если хочется чего-то нового, изящного, чистого, светлого?

Текст для любопытных программистов )

Очень любопытные технологии. Надо будет попробовать на практике.

coding

recoder: (Default)

Захотелось вот в рамках закрепления успехов Java-изучения попробовать сделать себе экспериментальный Web App, на котором и оттачивать умения. Гугление дало громадное множество самых разнообразных Web-фреймворков разной степени замороченности:

С одной стороны - глаза разбегаются от такого изобилия. А с другой стороны, большая часть этого добра - это монстры с наследственностью отягощённой совместимостью со старыми версиями - как себя, так и самой Java. Причём хорошим тоном является наличие десятков XML-конфигурационных файлов - это видимо делает их более enterprisey. Ужас.

А хочется чего-то похожего на Rails или Catalyst. Чтобы было гибкое и модульное. Чтобы минимум конфигураций, максимум соглашений и умолчаний. Чтобы MVC был родной, чтобы URI-mapping легко настраивался, чтобы генераторов результатов можно было несколько иметь. В общем, хочется среду, в которой будет приятно работать. Оно такое вообще бывает?

Наверное придётся пробовать самому всё по очереди. Начну-ка я пожалуй с Stripes. Потом - Wicket. Далее - везде. А если не найдётся ничего подходящего - придётся как обычно писать своё, с блэкджеком и шлюхами. Или учить Ruby.

Part2: Судя по обсуждениям в [livejournal.com profile] ru_java, надо смотреть в сторону Spring, а лучше Guice, а лучше Grails. Ну тогда наверное, ещё лучше с Java вообще не возиться и двигать на оригинальные Rails. Не?

» buzz java coding

December 2024

S M T W T F S
1234567
891011121314
15161718192021
22232425 262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 7th, 2025 11:54 pm
Powered by Dreamwidth Studios