Вчора менеджери обох проєктів, поточні етапи яких в значній марі на моїй відповідальності, повідомили мені, що дедлайни по цих етапах — сьогодні. Ну, тобто, по одному дедлайн був ще вчора, але його перенесли на сьогодні. Це якраз той проєкт, де ми рефакторимо код під Angular. А в Angular я вперше глянув на минулому тижні. А більш-менші відчув, як в ньому що і як — якраз сьогодні. Норм. Другий, ніби, надвечір вже здали, так що завтра все буде спокійно. Працювати в суботу в порожньому офісі — це прекрасно, так вважаю.

Напишу книжку: "Мистецтво факапу для досвідчених програмістів".

А тиждень тому шеф-програміст в нашому офісі сказав про спілкування з замовником щодо стилю написання нового проєкту: "Я получил свою порцию боли и унижения." Це якраз той проєкт, що на Angular, до якого мене підключили. За моєю власною порцією, напевне.
Як фахівець з perl'a (19 років досвіду) заявляю з повною відповідальністю — при одночасному моєму переході на нову оперсистему, мову і базу даних жодні граблі не залишаються ненаступленими. І не залишаться (якщо граблі екпериментальні — навіть двічі, як пишуть мудрі люди)!
Не пройшло й 20-ти років моєї роботи з Perl'ом, як я розібрався, як він працює з юнікодом. З цього приводу не мому не процитувати: "... на каждом витке развития Perl разбрасывает вокруг себя множество разнообразных граблей, которые программисты затем старательно собирают (иногда по два раза, если первые грабли были экспериментальными)."

https://habrahabr.ru/post/53578/
Спецкурс, присвячений, переважно, програмуванню на JavaScript (і в браузері, і на сервері - під node.js) - виявився чимось середнім між "вступом до практичного програмування", який я планував був до викладу, та заявленою (вимушено) темою "Інтернет-проєкти". Але тема темою, а читати таке слухачам, які, як виявивлосЬ, ще не вміють толком програмувати (а вже ж - аж цілий 5-й курс!), мені забракло ентузіязму. От і мусив сфокусуватись на JS.

Отже, викінчив конспекти (хоч багато де і без подробиць). Раптом кому цікаво: http://ruthenia.info/cgi-bin/r.pl?c_=not&c_=!5990
Не ціную програмістські трюки. Як пишуть в книгах по програмуванню, кожен трюк - це, потенційно, купа геморою при наступній підтримці системи. Але - мусив таки согрішити :-)

Технічні подробиці невеличкого програмістського блуду...

Чи такі рішення вже й не належать до катеґорії трюків? М-м-м-м...
При використанні асинхронного вводу-виводу для дописування в файл (callback-композиція: fs.open('filename', 'a',...) / fs.write / fs.close) - система асинхронна аж настільки, що фраґменти, відправлені на запис пізніше, можуть виявитись записаними в файл перед тими, що були відправлені раніше. При цьому використання сихронного вводу-виводу документація строго не рекомендує з огляду на можливі блокування системи під нагрузкою. Що й сказати... Поубивав би...
Зроблено товаришем [livejournal.com profile] shcho - на основі розмаїтих відкритих джерел. Спасибі! Ось воно, значить...
Хоч молоде покоління і називає мене некрофілом (в фаховому сенсі), але часом, все ж, хочеться й свіженького. Словом, за сукупністю обставин, купив я собі новий компутер. Компутер, як виявилось, з дуже людським лицем - ОEM Linux (Fedora => Linpus, включно з Gnome) встановлений на /dev/sda1 (sic! /dev/sda0 залишено під тупорилу альтернативу) і він же на диску, з якого після репартиціонування систему можна відновити буквально за чверть години. Ну, після установки віндів і майстерного ручного управління GRUB'ом ідилія була трохи порушена - все наглухо вмерло - але наступна доустановка повноцінного Linux'a все привела в порядок. Мова, однак, не про це.

Колись давно-давно (в 98-99-му) я почав був використовувати MySQL і тоді ж знайшов підходящий графічний клієнт MyAdmin - простий, як граблі, тільки ввід оператора, перегляд результатів і дерево структури БД. По тому пробував був і серйозніші інстрУменти, але мимо - свістєлки-пєрдєлки я не той-во-во, натомість ускладнення базових операцій мене дратує. Отже, після встановлення MySQL (юзаю не найсвіжішу версію - 4+ - але мені в ній нічого не бракує) на новому компі відбувся приблизно наступний діялог.

MyAdmin: "MySQL каже, що я для нього застарий - і не судьба".
Я: "Ех! Колись це повинно було статись. Прощай, друзяко!" - і берусь ставити актуальну версію MySQL Workbench. Read more... )
Апріорна оцінка: це мало би бути не надто складно, оскільки ця система використовує просту-зрозумілу мову JavaScript.

Емпіричний результат: все просто-зрозуміло, за винятком мови JavaScript, яка в node.js використовується не так, як в 99% прикладів Web-програмування, але - по-справжньому.

А якщо по-справжньому, то JavaScript - мова далеко не тривіяльна. При цьому ситуаціїї додає пікантности той факт, що запит в гуглі на кшталт "мануал JavaScript" видає мегабайти і мегабайти текстів, пов’язаних з програмуванням скриптів у браузерах, видирати з яких інформацію по мові JavaScript, як такій - ох, марудно... Словом, людського мануала по JavaScript я поки так і не знайшов :-(

Характерний приклад з Javascript.ru ( http://javascript.ru/basic/syntax-switch-for ) :

"Работа с исключениями в javascript организована в типичном для языка стиле вседозволенности.
Абсолютно любой объект можно бросить в виде исключения:
try { ... throw {message: "Ого!"} ... } catch (e) { alert("Ага, попался!") }
Обычно бросают, все же, не простые объекты, а потомки встроенного класса Error..."

Спасибі-спасибі! А як саме "віртуальна машина" оперує програмними контекстами в процесі обробки виключень - це, звісно ж, самоочевидно. А якщо не самоочевидно, то легко встановлюється методом "ментального сканування" ((с) [livejournal.com profile] gaperton).

P.S. Добрий мануал, який роз’яснює, принаймні, основні нюанси JS в node.js таки ж знайшовся: http://nodebeginner.ru/

Заодно, по ходу всіх цих пошуків, я розібрався, що значить "foo" та "bar" - не минуло й 20 років активної програмістської практики. Ура!
Займаючись системою аналізу тексту - веду деякі обговорення і викладаю матеріяли в «нотатнику». раптом комусь то буде цікаво :-)

Логіка імени згідно теорії Фреґе-Черча: відношення іменування, денотат, концепт... (пункт "01. Имена" з книги Чёрч А. "Введение в математическую логику"). Якщо існують тексти стосовно розуміння мови, які можна назвати "обов’язковими до прочитання", то серед таких на одне з перших місць я би поставив цей невеликий параграф. Безсумнівно.

Концепції та інструментарій комп’ютерної лінґвістики - дуже частковий і неповний огляд, чисто "для почину" (стаття для спільного редаґування, як у вікіпедії).

Перший етап комп’ютерного аналізу тексту (tokenization) - консультація-обговорення з фахівцем.

Синтаксичний аналіз тексту з одночасним контролем семантики: як це працює і які проблеми при цьому виникають - консультація-обговорення з фахівцем.

Ґлосарій лінґвістичних скорочень - для таких самих неграмотних, як я :-( Також стаття для спільного редаґування.

Долучайтесь.
Обговорюється створення деякого проєкту, в числі складових частин якого передбачається такий собі middlware-сервер (application server? чи як би то краще означити...) в якості проміжного шару між SQL-сервером і HTTP-сервером. На цьому рівні буде оброблятись "бізнес-логіка".

Проєкт має бути високонагружений, але коли виникне ця висока нагрузка - хтозна... ймовірно, далеко не одразу. Натомість швидкість запуску ядра системи та можливість уточнення і відладки клієнтських інтерфейсів - видається ключовим параметром на першому етапі розробки.

Відтак, зробив коротесенький огляд можливостей для потенційного замовника. Може, ще кому було би цікаво. Тема, звісно, вкрай дискусійна.

Можливі варіянти бачу наступні...
По довгих роках роботи на perl'і вирішив оновити свій C'шний досвід - благо, з’явилась дрібна задачка, зробити для якої бінарник видалось мені доречним рішенням.

Стартова постановка "інсталяційної задачі" - одержати робоче C'шне середовище з підтримкою regexp'ів (ну, як же без них перловику :-)) і потенційною можливістю міґрації під UNIX (тому що...)

Докладніше - як це було... Раптом кому цікаво...

P.P.S. Як виявилось, C не розуміє безскобочного виклику функцій: printf "Hello!"; - зовсім не працює. Ото дурне...
«Дочка, прекрати свой словесный понос!»
– говорит мне, трехлетненькой, папа.
А я, умненькая, к маме подхожу:
«Мама! А что, если буду много говорить,
животик заболит?»


Ой, дошла я таки до ручки! Смотрю на нее и думаю: а как же тебя в латинский регистр переключить, милая? Дура я дура...

А все почему? Нестандартизованный приборчик эта шариковая ручка. Не то, что моя любимая оперсистемка – ...

Докладніше...

Одним словом "опять обманули честную девушку, подлецы!.."
Освоюючи нові технології нещодавно натрапив на JSON - це мова зберігання структур даних (типу XML) в JS-синтаксисі. Цирк же в тому, що декілька років тому мені потрібна була така фіча - і написав відповідний код сам. Синтаксис, звісно, инший - але сенс в точності той же.

Якби я тоді знав про JSON - можливо, і не став би «відкривати америку» - але що зроблено, те вже зроблено. Принаймні, цей код має, скоріш за все, ту перевагу перед перловим JSON-пакетом, що в тому - кілька тисяч рядків, а в пропонованому коді - 150.

Код цей у мене працює давно і надійно - зокрема, практично всі неіндексовані поля в SQL-таблицях я не описую в структурі таблиць - вони на льоту упаковуються-розпаковуються в структуру даних за допомогою обробника, який використовує цей мій синтаксис запису структур. Це зручно. В тому ж синтаксисі задаються консольні параметри для скриптів, конфіг-файли і, зрештою, майже всі инші структури даних, які доводиться вносити вручну.

Якщо це кому цікаво - ось коди:

http://ruthenia.info/txt/pavlo/a_t/arbor.pm - сам модуль
http://ruthenia.info/txt/pavlo/a_t/i.pl - тестовий скрипт

І сторінка з мануалом:
http://ruthenia.info/cgi-bin/a.pl?c_=not&c_=1305871958_pavlo
«Настоящий программист может написать программу на Фортране,
пользуясь любым языком программирования» (фолькльор) -
но эта записочка совсем о другом.


Это у вас, у мужчин, все просто. А честной девушке ой как приходится потрудиться, чтобы у нее получилось...

Докладніше про нюанси праці справжньої програмістки :-)
Зо три місяці тому мене пробило на радикальний крок в сенсі організації своєї програмістської діяльности - наприкінці робочого часу (плюс-мінус перед сном) записувати на папері план роботи на наступний день. Иноді я так робив і раніше, але - так... зрідка... та й не прив’язуючись "до дня", а радше проясняючи собі той чи инший шмат наступних справ.

Так от, такий щоденний запис ДУЖЕ допомагає працювати ефективно. Звісно, плани є завжди, вони так чи инакше занотовані в комп’ютері, але ці нотатки часто не місять відповідей на питання - "як саме? як краще?" І за комп’ютером, в процесі роботи такі питання вирішуються, зазвичай, якось не дуже :-( При переносі ж на папір, коли не тисне необхідність конкретно доробити третє-десяте - упс! все рішається куди легше і толковіше. Це не значить, що всі написані плани виконуються в точності і за день, але це в рази зменшує безглузде шарпання на робочому місці - і робота реально йде краще.

Так от. Програмую я вже понад 10 років. Чому ніяка мудра людина і ніяка книга (а я їх трохи таки й читав, ага-ага) не сказали мені раніше, що варто робити саме так? Най цей спосіб корисний не для всіх (у кожного - свої таргани в голові), але я би попробував і оцінив його для себе. Чому, зрештою, сам я не додумався ще в 91-му, коли записував денні плани доволі регулярно - що такий метод має для мене не ситуативну цінність, але - постійну? Скільки ж часу і зусиль злито в унітаз за всі ці роки - коли робота без людських планів йшла так-сяк, перестрибом-перескоком! Ех...

November 2016

S M T W T F S
  12345
6789101112
131415161718 19
202122 23242526
27282930   

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 08:34 am
Powered by Dreamwidth Studios