crypt of decay - June 15th, 2015 [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

June 15th, 2015

кстате [Jun. 15th, 2015|11:35 am]
новое (ну, относительно) модное поветрие делать double buffering в гуях я считаю извращением и пораженческими настроениями. стразики и переливчики тоже, кстати. мне вообще по нраву гуй «в стиле NeXT» — как в Window Maker. мои тулкиты примерно так и выглядят, я оттуда безжалостно внешность сдираю. и да, никакого double buffering для этого не надо, а надо просто спокойно рисовать.

и ещё кстате: в текущем тулките я приблизился к мечте авторов иксов наиболее плотно. изначально, напомню, бродили такие идеи, что при отваливании икс-сервера, а потом поднятии снова программа должна не тупо падать, а спокойно ждать и переподключаться, воссоздавая свой ебальник «как было».

так вот, в новых гуях я злобно разделил стадии «создать виджет», «настроить виджет», «создать иерархию виджетов», «хуйнуть это всё в X11». стадии вызываются явно, «за кулисами» ничего не делается. и, натурально, виджет имеет всю информацию, чтобы спокойно пересоздать себя, когда dpy сменился. может, ради шутки, и встрою такую опцию. в принципе, там кода-то — сбросить кэш цветов и шрифтов, да рассказать виджетам, что они unrealized (то бишь, присвоить полю X11.Window значение None). и всё, можно заново делать XOpenDisplay(), как будто ничего не было.

есть мнение, что такой уберфичей не обладает ни один из современных модных гигакрутых тулкитов. гыгы.
Link21 meows|meow!

смена парадигм, блядь! [Jun. 15th, 2015|12:55 pm]
обнаружил вдруг, что некоторое время назад (это не недели и даже не месяцы, если чо) полностью сменил способ написания софта. раньше я долго думал, продумывал API чуть ли не до уровня ваще кода, всё это как‐то увязывал, а потом делал либы и софт.

в итоге получалось, что в API я всё равно накосячил, потому что это таки забыл, то не учёл. в либах тоже кое‐что сделал не так. да вдобавок пока писал — требования немного изменились, и пришлось адаптировать то, что есть, к новым.

при этом я очень не любил выкидывать уже написаный код. потому что как же так — я же, блядь, ДУМАЛ, и тут вдруг выкинуть. я что, зря думал, или неправильно? нет, не будем выкидывать! даже если он не нужен или бесполезен: а вдруг пригодится потом?

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

сейчас я перешёл к новому принципу. вкратце это называется «take your reusability to the bank and fuck it!»

во‐первых, нахуй универсальные крутые библиотеки. они всегда чересчур сложны и запутаны.

во‐вторых, в новом проекте будут новые требования, и нет ничего страшного в переписывании библиотеки под него. натурально, какие‐то части кода можно спокойно взять из старой (зачастую вполне большие части, иногда чуть ли не полностью), но нет ничего ненормального в том, чтобы поменять API, например, или порядок действий.

в третьих, не боимся развалить то, что только что построили. пишем гуйтулкит? отлично, начинаем с того, чтобы как можно быстрее нарисовать на экране окошко с текстом «ты хуй!» нарисовали? отлично, выкидываем ненужный код, добавляем нужный — теперь окошко у нас класс, а не просто иксовый хэндл. сделали? ура, вынимаем из класса иксовый хэндл, уносим в другой модуль, учим класс работать с таким вариантом. и так далее.

да, на каждой итерации мы делаем больше кода, чем делали бы, если бы всё продумали сразу и стали писать как полагается, «снизу». то есть, «по уму» делаем сначала кэши цветов, кэши шрифтов, всю вот эту механику… всё, я уже хочу нахуй бросить заниматься ерундой. потому что куча кода написана, а окошко всё ещё никак не нарисовать. потому пишем «сверху» — от окошка к кэшам, постепенно добавляя фичи и перерабатывая код. так интересней.

ключевое — перерабатывать код небольшими кусочками. чтобы почти всегда можно было запустить и посмотреть на окошко. и да, если перерабатывать заебало — можно отвлечься на создание новой фичи. например, вывода в окошко картинок. конечно, 90% кода вывода картинок будет потом рипнуто — ну и что? сохранение интереса не менее важно, чем «чистота кода». может, даже, более важно.

естественно, это не «пишу не приходя в создание, потом посмотрю, что получится». я изначально имею в черепе план того, что и как я хочу увидеть в итоге. наподобие «каскадные стили, отсутствие дохуя умной автоматизации, примерно вот такой синтаксис для создания, etc.» и последовательно иду к этому. но именно последовательно, и имея на каждом этапе что‐то, с чем можно поиграть, или просто посмотреть и подумать: «таки вот, окошко, работает! круто! едем дальше.»

предостерегаю, что если изначально плана желаемых фич и того, как оно должно выглядеть в итоге, нет — то в результате применения метода получится вполне ожидаемый неюзабельный говнокод. поэтому лучше всего метод подходит для товарищей с опытом, которые более‐менее представляют не только то, что они в итоге хотят, но и то, как это должно выглядеть внутри (и пусть первые варианты на это совсем не похожи; неважно). если же опыта нет… метод тоже работает, просто переписывать придётся сильно больше.
Link15 meows|meow!

navigation
[ viewing | June 15th, 2015 ]
[ go | Previous Day|Next Day ]