четверг, 25 мая 2017 г.

Размышления

Сегодня понял одну банальную и в то же время совсем неочевидную вещь.

Если функционал хорошо покрыт тестами, то главное это, чтобы все тесты проходили. Пусть код "костылен" и неидеален.

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

И при этом это позволяет убирать "костыльность" и неидеальность.

Но постепенно. А не "сразу".

среда, 24 мая 2017 г.

Offtopic. Любителям истории

http://periskop.livejournal.com/766659.html

"С фотоаппаратом по линии Зигфрида".

У меня есть скан этого номера Техники Молодёжи.

Люди упорно ищут

Люди упорно ищут контекст - "тест-кейс для проверки калькулятора".

И приходят ко мне в блог.

Что же реально они хотят найти?

Не понимаю 2...

Или написать DoFoo и потом комментарий - "этот метод делает то-то и то-то".

А по-человечески метод нельзя назвать?

Не понимаю...

Написать UpdateSomeState(2).

И далее написать комментарий:

// 2 - это "такая то константа", она делает то-то и то-то

Const или Enum уже отменили?

И ведь так - ПОВСЕМЕСТНО.

вторник, 23 мая 2017 г.

Смешно. "Смешит" и Embarcadero и Штефан Глинке

https://plus.google.com/u/0/+StefanGlienke/posts/Ys1NnBKQQxU?cfem=1
It just occured to me that when I have such code:

type
TFooBar = class
s: string;
end;

procedure Main;
var
x, y: TFooBar;
begin
x := TFooBar.Create;
y := TFooBar.Create;

x.s := 'True';
y.s := 'True';

Assert(Pointer(x.s) = Pointer(y.s));
end;

begin
Main;
end.

The assertion will raise because whenever you assign a string literal to a string variable it checks if the string is a const (refcount = -1) and then calls _NewUnicodeString). I guess this has been discussed already somewhere else but I cannot find anything regarding my question:

I would guess that even if it is a const it could assign that reference to s and don't touch the refcount. This should work fine with the cow mechanics.

But as it is this would mean that if code runs through such const string assignments every time a new string gets allocated, no?
In my case I am using the const string 'True' for nullables in Spring to set the "HasValue" flag for them (otherwise the field is empty). However by using a const there it creates a new string every time. So if you have 10 nullable values you have 10 string instances with the content "True". The only solution I found so far was to make the const a variable (in this case it works because its private) and assign 'True' to it in the initialization section (or could also in the class ctor). That way there is only one string instance with content 'True' for the nullables around.

Any other solution I am missing?

Edit: I found this SO question:
https://stackoverflow.com/questions/12837129/string-const-why-different-implementation-for-local-and-result so I changed the original example to use objects and non global variables.

In my case I know that the module the literal is coming from will not be unloaded before anyone that is using it. That makes me think if we would need some kind of const string with start refcount = 1. Since its a const you could not modify it (which would modify the const because of refcount 1) but when assigning somewhere the same reference is being used and no new strings are being produced. I guess I am missing some cornercases why this is not possible -.- So I probably will use the hidden string variable to get the same result.

вторник, 16 мая 2017 г.

Offtopic. Сказка закончилась №2

ВТОРОЙ МОМЕНТ.

Про СКАЗКУ и КРАСОТУ.

Когда-то в аэропортах с парковкой и организацией движения была СКАЗКА и КРАСОТА. Почти ЕВРОПА.

Но и это всё изгавняли. Простите.

Вот тут был в Шереметьево на машине. Заплатил 700 руб за "парковку" в течении 22 мин.

В чём же дело?

А очень просто.

Я подъехал, чтобы забрать пассажира. Взял билет. Поехал к выходу. Над одним выходом написано "VIP. Международные линии".

Думаю - НЕ ТУДА.

Еду дальше. Дальше написано - "внутренние линии".

ВСЁ - БОЛЬШЕ НИКАКОЙ информации нет.

СПРОСИТЬ - не у кого.

Подъехал. Спросил какого-то мужика - он говорит "не это внутренние линии, где международные - не знаю".

Выехал. Поехал на второй круг.

Опять взял билет - поехал туда где написано - "VIP. Международные линии".

Долго ездил по "кишке" с поворотами. Упёрся в шлагбаум. На нём написано "приложите билет или вставьте карту". Билет прикладывать - НЕКУДА.

Матерясь выехал по "кишке задним ходом".

Подъехал обратно к "внутренним линиям". Поставил машину. Нашёл пассажира. Посадил.

Оказалось, что всех выпускают там где написано "внутренние линии". И с международных - ТОЖЕ.

По часам вроде - в 15 мин уложился.

Подъезжаю к шлагбауму. Вставляю билет. А мне пишут - "требуется оплата". Платить негде.

За мной выстроился хвост из 5 машин.

Я всех "растолкал" и выехал задом к паркоматам.

У паркоматов стоит человек десть и все пытаются оплатить. НИ У ОДНОГО не получается. Все засовывают тысячные купюры - всем их возвращают. Кто-то ругается по громкой связи с парковщиками.

Току - НОЛЬ.

Минут через пять дождался своей очереди.

У меня были мелкие купюры. ПО 100 руб.

О ЧУДО! У меня паркомат оплату ПРИНЯЛ.

И у следующих за мной - ТОЖЕ.

ПРОБЛЕМА БЫЛА в ОТСУТСТВИИ сдачи.

ПАРКОВЩИКИ об этом - НИ УХОМ НИ РЫЛОМ.

ПО чеку - я потратил 22 мин. Т.е. с учётом времени оплаты - я не уложился видимо где-то в 1 (ОДНУ) минуту.

Всё изгавняли.

РЫБЯТЫ!

Мне НЕ 700 руб ЖАЛКО! Мне "за ДЕРЖАВУ обидно"!

Была КРАСОТА, СКАЗКА и ЕВРОПА.

Стало...

Ну стало - "как обычно"...

ОЧЕНЬ ЖАЛЬ.

Ну и указатетели и знаки в Шереметьево - ГОВНО. Извините...

Offtopic. "Сказка закончилась"...

"Да никак "они" не планируют   Они плитку около метро по третьему разу перекладывают   В "этом мире" давно уже важен "процесс", а не "результат". Я давно и всё время об этом говорю."

У нас почему-то даже если что-то работало Perfekt! - То и то перестаёт работать.

Вот смотрите.

ЗАМЕЧАТЕЛЬНАЯ вещь - экспрессы в аэропорт.

Когда они только появились - это была СКАЗКА! Это была ЕВРОПА! Это был ЦИВИЛИЗОВАННЫЙ МИР!

Билет стоил 100 руб. Билет можно было купить прямо в экспрессе. Если у тебя был билет на самолёт, то можно было ехать БЕСПЛАТНО.

СКАЗКА! ЕВРОПА!

Не говоря уж о том, что на том же Павелецком вокзале можно было накануне вечером зарегистрироваться и сдать багаж. И ехать на следующий день налегке. Уже зарегистрированным и БЕЗ БАГАЖА.

СКАЗКА! ЕВРОПА!

Сейчас - НИЧЕГО ЭТОГО НЕТ. :-(

Ну и экспресс стоит не 100 руб, а 700. Могу путать точные цифры.

И главное - всё "скатилось в жопу". Простите мой "французский".

Недавний пример.

Приехали мы тут на Белорусский вокзал. С Кунцево. На путях стоит поезд-экспресс. Пустой. С открытыми дверями. Куча людей в форме РЖД.

Билетов у нас нет. Надо покупать билеты. Для этого надо выйти с платформы к кассам. И купить билет.

Подхожу к служащему - спрашиваю - "а можно оплатить билет прямо в поезде или как-то ещё". Он пожимает плечами и говорит - "я не знаю".

Один. Другой. Третий.

Ну вышли. Купили билеты.

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

НИКТО НИЧЕГО НЕ ЗНАЕТ!

СКАЗКА и ЕВРОПА - ЗАКОНЧИЛИСЬ :-(

Начались обыденные серые будни и "синром вахтёра".

Про синдром.

Купили мы билеты. Идём обратно к экспрессу.

Там - ВСЁ КРАСИВО - перрон, навес. КРАСОТА!

НО!

На перрон - НЕ ПУСКАЮТ.

Собрали всех людей в апендиксе между кассами и перроном. Отгородили шлагбаумом. Идёт дождь. Люди стоят, мокнут. А рядом, через шлагбаум - КРАСОТА и навес от дождя. Но! ТУДА НЕ ПУСКАЮТ.

Пускать стали ТОЛЬКО за 5 мин ДО ОТПРАВЛЕНИЯ экспресса.

Всё! СКАЗКА и ЕВРОПА - ЗАКОНЧИЛИСЬ!

А когда-то было ЗДОРОВО и КРАСИВО.

РЫБЯТЫ! А САМ - "патриот", но НЕЛЬЗЯ ЖЕ ТАК! Нельзя вот так взять и ВСЁ ИЗГОВНЯТЬ. ТО ЧТО УЖЕ РАБОТАЛО!

Извините.

воскресенье, 7 мая 2017 г.

Offtopic 7

Знаете. Мне в 10 раз было бы легче жить - если бы меня не тыкать этим идиотским американизмом - "если ты такой умный, то почему такой бедный".

"Если ты критикуешь победу - летай бизнес-классом".

"Если тебе что-то не нравится - купи дом и уезжай из города".

А можно я буду "просто умным"? Ну и "бедным"...

На ваш вкус.

Можно мне этим не тыкать?

Я вообще - "не бедный". На "мой вкус".

Но всё тыкают и тыкают...

Offtopic 6

Мы в 96м году ехали из Нальчика (с Эльбруса) в поезде Грозный-Москва. Вокруг ходили"злобные Чечены". Но мы были молоды и бесшабашны. И мы пили водку за День Победы.

И нам было пофиг, что происходит вокруг.

Мы были уверены в "неоспоримости" праздника.

Прошло 20 лет.

Я не уверен, что те с кем я тогда пил - уверены в "неоспоримости праздника".

Не то, что "чечены". За них  даже более уверен.

Грустно братцы... :(

Offtopic 5

И ещё одно "дурацкое" наблюдение.

Лет 10. А ТЕМ более 20 назад.

Программирование было сродни "запуску ракет в космос".

Программисты были безумны.

У всех "горели глаза".

Все были "готовы работать за еду" (утрирую конечно).

А сейчас...

Это "просто работа". "В ТЗ такого не было, идите нафиг" (сам таким грешу).

"Везде бардак, так а чем я лучше".

Грустно. "Очарование начала профессии" - прошло. :(

Всё работают "лишь за деньги".

Я - тоже.

Offtopic 4

Я тут немецким занимаюсь. Стал строить "похожие группы сильных глаголов". Мне преподавательница говорит - "это всё глупости, их просто надо учить". Я говорю - "я их учу. Но мне методика интересна. Я -программист. Мне интересна логика и параллели". Учительница говорит - "а, ну тогда понятно".

Offtopic 3

Чтобы не забыть - "Книга, которую ценят математики, - "Вероятностная модель языка" В. Налимова - мне очень помогла в 80-х лучше разобраться с проблемой понимания текстов."

Offtopic 2

Знаете. Вот я о чём подумал. Ведь кроме как "о программировании" - мне неинтересно разговаривать. Но не с кем :( везде лезут "пальцы и понты". Я вот когда-то с людьми любил поговорить о "красоте идеи". Просто так. А не "а что оно нам даст" или "какой практический смысл". Просто о "красоте идеи".

Нету собеседников. Или все меня переросли.

Разговариваешь с людьми, а всё скатывается либо в деньги, либо в политику, либо в общую необустроенность. Либо в личные "понты".

Потому и отвлекаюсь на "общественные темы". Хотя они на самом деле - не очень волнуют.

Ну кроме бесспорности Дня Победы.

Offtopic 1

Преклоняюсь перед Степановым. Создателем STL. Я немного видел в программировании подобных абстракций. Хотя некоторые и говорят. Что это излишне.

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

Мне всегда линейная алгебра нравилась. У нас был хороший преподаватель - Солнцев. Но я её так и не постиг.

А у Степанова настолько всё красиво. И "навскидку просто".

Нет слов. Одни чувства.

вторник, 2 мая 2017 г.

Накануне Дня Победы

#Победа #победобесие #можемповторить #московскаясага #небайка #антибайка

Чтобы было понятно про Победу и всё связанное.

У меня один дед был полковник танковых войск. Освобождал Белоруссию в операции Багратион. Закончил службу в штабе КБВО. Имел наградное оружие. При Хрущёве - был вынужден его сдать. Другой дед - полковник артиллерии. Служил в Капустином Яре, где испытывалось ракетное оружие. Тётка моя вспоминает как всем посёлком ходили смотреть на "вспышки ракет". Ещё один дед - комиссар-политработник. После войны - служил в Калининграде/Кёнигсберге. Прадед - в войну был связистом - начальником московского телеграфа. Есть книжка "связисты во время войны" - с его фотографией. Отец - майор КГБ. Технический отдел. Дядька - служил в КГБ и ФАПСИ. Воевал в Афганистане. Выходил с войсками через Термез. А потом он в 90-е вывозил беженцев-армян из пылающего Баку. Когда из центра не было приказа кого-то куда-то вывозить. Посадили на БТРы. Потом подняли военно-транспортные борта. Ещё один дядька - был полковником артиллерии. Ещё есть легенда, что один родственник избежал блокады, потому что по доносу попал в Сталинский лагерь. А ещё прадед погиб добираясь из занятого немцами Калинина (Твери) в свою деревню. Он был мастером на заводе. А деревню немцы так и не заняли. "Великая русская река Кава остановила немцев". Так в деревне говорили. Ещё двое дедов - воевали солдатами в Великую Отечественную. Ещё один прадед - "поднимал сельское хозяйство Германии", будучи там в окупационной администрации директором совхоза. А ещё он - "старый большевик Костромской парторганизации". У меня и фотография имеется. И он да, когда умирал, говорил - "революцию не так надо было делать". И такое было. Соседка по даче - девчонкой была угнана в Германию. Были родственники, которых и репрессии коснулись. А дед жены например - во время Войны служил одним из секретарей в посольстве в Вашингтоне. Без погон. Формально. Горел на обратном пути на пароходе "Победа". А ещё у жены были родственники евреи, которые сгинули в горниле Войны. Ещё у нас были родственники, которые пережили блокаду Ленинграда. А кто-то - не пережил. Ещё те - кто был в эвакуации. А сосед служил шофёром-испытателем танков в горах Грузии. А потом строил метро в Тбилиси (привет от фильма "Добровольцы"). А ещё был знакомый узбек - Хасан (тот самый чайханщик), который служил в ракетных войсках. А потом он был командиром отряда самообороны, когда в Оше была резня. А вывез его из резни - знакомый киргиз. Хотя вроде и был "на другой стороне".

Ну и всяких знакомых и родственников - профессиональных военных было множество. Один например был полковником военно-геодезической службы.

И такая семья как Варвашеня (https://ru.m.wikipedia.org/wiki/Варвашеня,_Иван_Денисович) - в знакомых была.

И Третьяк (https://ru.m.wikipedia.org/wiki/Третьяк,_Иван_Моисеевич) - тоже.

Вот такая вот - "не только московская сага".

Вот вам - "тезисы для книги". Которой никогда не будет.

Так что не надо мне про "победобесие" и "деды не за то воевали". Может и "не за то", но явно не за либерастию, "надо было сдать Ленинград" и "сейчас баварское пили бы".

Но и не надо про "можем повторить". "Повторялка" - далеко не у всех выросла. И в частности у меня самого.

Мой личный "бессмертный полк" - не мал. Он очень даже велик. Он практически необъятен. Какое бы понятие в это ни вкладывали бы другие.

А тем кто говорит - "можем повторить" - хочется дать лопату и отправить копать окоп в полный профиль на морозе в мёрзлой земле. Ну или "парашют на морозе складывать". (Меня как-то били наши доблестные десантники, приговаривая "а ты парашют на морозе складывал?" И такое было). Так что я лично - "без иллюзий". И с тех пор стараюсь не носить тельняшку и камуфляж.

Ну а тех, кто мол "победобесие" говорит - не знаю... могу лишь пожалеть.

Как-то так. Это НАДО было сказать накануне очередного Дня Победы.

Чтобы хотя бы знакомые знали.

Думаю, что подобная "сага" - не единственная в своём роде.

Не только деньгами и "успехом" измеряются люди.

Как бы ни хотелось ни "либерастам", ни "патриотам", ни "властям".