?

Log in

No account? Create an account

О датах

Feb. 20th, 2018 | 07:14 pm

Запишем даты в список проклятых тем в этом вашем вайти в которые никто не умеет. У всех с этими датами, временем, таймзонами выходит какая-то херня из-за чего всё едет к чертям и не работает.

Начать нужно с того что даты бывают разные и сильно зависят от контекста в котором их используют. Новый год в любой точке глобуса наступает 1 января, и в Владивостоке, и в Мариуполе, и в Нью-Йорке. Будильник настроенный на 9 утра должен звонить в 9 утра независимо от текущего местоположения. Но разговор по телефону назначенный на 9 утра в NY, в Киеве случится в 16 часов. Улавливаете мякотку?

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

Я озвучу свой частный случай, ибо полного и универсального решения у меня нет, но думаю что оно и не надо. И так: сохраняйте контекст. Не обязательно в базе, можно (и наверное лучше), в ТЗ и сопроводительной документации. Нужно чётко понимать какие даты следуют за таймзонами, какие нет. При этом выбирайте правильные типы, дата это собирательное название для собсна даты, времени и даты с временем. При этом внезапно может оказаться что указывать нужно только дату, но при этом она должна ходить за таймзонами (как?). Что делать в коде: я не придумал ничего умнее чем написать кастомный материалайзер для EF6 и просто расставлять kind для дат на основании вручную проставленых атрибутов (метапрограммирование убер алес). Для тех кто ходит за таймзонами - UTC (они и в базе храняться как UTC). Для фиксированных - Local (в базе по хорошему хранить как date, time, datetimeoffset, но реальность вы и без меня знаете). Ещё написал свой конвертер в json, соответственно даты в UTC сериализуются с указанием таймзоны 'Z', даты в Local идут без таймзоны (почему-то Newtonsoft.Json так не умеет из коробки). В итоге на сайте они отображаются правильно, первые автомагически переводятся в таймзону клиента, вторые нет. Какие ещё есть подводные камни - вычисление интервалов. Часть дат у вас в UTC, часть фиксированы, это нужно помнить и учитывать. Ещё момент - входящие данные. Пользователь что-то ввёл - опять же не забывать правильно трактовать (наверное проще сделать через атрибуты и json converter, хотя хз, я на этот момент забил).

Да хранят вас боги времени :)

PS Никому электрик не нужен?

Link | Leave a comment {34} |

Ремонт: часть 3, электрификация всей страны

Feb. 11th, 2018 | 02:01 pm

Советы по электрической части. Без философских рассуждений, строго по делу.

Выбирая вот это всё, я руководствовался двумя простыми правилами: не экономить и брать разумно-достаточный уровень. По первому пункту — это качественные проверенные бренды. По второму - не брать кабель из структурированной меди с иридиевым напылением сплетённый нежными руками девственниц в полнолуние, можно взять такой же, но с золотым напылением, ничем не хуже будет :)

нудятинаCollapse )

Link | Leave a comment {8} |

Ремонт: часть 2, генплан

Feb. 11th, 2018 | 11:08 am

В основе ремонта должен быть план. Что где стоит, куда подключено, куда сливает, и ответы на прочие насущные вопросы. Так уж получилось, что строителей мы искали месяц. Помните, в прошлом посте я говорил записывать всё — вот это оно. Начинали мы с наскальной живописи (мелом на стене), закончили хайтеком (в облаках). Набор мыслей со временем структурировался и перерос во вполне нормальные документы: текстовые с общим описанием, всяких схемы и планы в визио. Этот этап и очень важный, и очень сложный, и очень нудный.

жми на меняCollapse )

Link | Leave a comment {18} |

Ремонт: часть 1, хоп, мастерок

Feb. 3rd, 2018 | 09:48 am

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

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

В итоге у меня в доме работают следующие люди.

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

Электрик. Кто-то должен тянуть эти ваши километры кабелей (реально чуть больше километра ушло). Я никого не искал, достался вместе со строителями. Тоже попался адекватный мастер.

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

Вентиляция и кондиционирование. Второй очень важный аспект. Дышать чем-то надо. Загуглил интернеты, позвонил одним, типа оставьте заявку мастер посмотрит и перезвонит. Ок, выслал планы, написал что хотел (я тогда сильно много прочитал про канальные системы, реально бомбическая штука, если есть где ставить, хотя и стоит как паровоз). Прислали что это типа сильно всё дорого и должно быть техническое помещение. И всё. Оооок. Звоню вторым, те нагородили 4 кондиционера. Спросил про мультисплит - типа дорого, но подумаем. На ответ уходила неделя, этим точно деньги не нужны. Звоню третьим. Сначала про рекуператоры спросил, потом про кондиционеры, какие есть, куда ставить, выслал планы, общались телефоном, почтой, вариант такой, вариант сякой. В итоге в течении недели-полторы у меня уже было несколько рабочих решений, оставалось договориться с жабой и выбрать какой-то один.

Сигнализация и интернет. Тут всё просто. Кто успел при строительстве договориться с застройщиком - того и тапки. В доме у торчал опто-хвостик и какие-то зачатки для датчиков сигнализации. Позвонил, приехали рассказали всё, как это работает, какие системы есть, протянули провода куда сказал и осталось подключиться.

Лестница. Тоже очень долгие поиски плюс согласования и прочее. Нашёл один, приехали, посмотрели, померяли и всё. Через некоторое время сказали стоимость и больше ничего. Эм... Звоню другим, мило пообщались, рассказали кучу всякого, потом приехали посмотрели, померяли, сразу указали на огрехи, которые нужно будет исправлять, назвали примерную цену и звоните после НГ, ибо сейчас заняты и не можем. Позвонил приехали ещё раз, ещё раз перемеряли, нарисовали как можно исправить косяки (лестницу делали строители, которые в лестницах ничего не понимают), предложили несколько вариантов по исправлению и через пару дней работа закипела.

Пол. Мы решили положить паркет. Соответственно товарищи, которые этот паркет делают (паркет украинский, и дёшево, и качественно, и поддержка национального выробныка :), его же и будут укладывать. Вместе с гарантией и всё такое.

Потолки натяжные. Опять же отдельные люди, которые занимаются только этими потолками. Что там у них творится и какие есть варианты этих потолков я пока без понятия, надо разбираться и таки искать.

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

Вроде как все полезные люди в хозяйстве. Дальше уже будет конкретно про ремонт и мегакосяки. Не переключайтесь :)

Link | Leave a comment {20} |

Ремонт: часть 0, типа вводная

Feb. 2nd, 2018 | 07:18 am

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

Любой ремонт должен начинаться с того, что нужно просто сесть и подумать что же хочется получить в итоге и сколько денег на это есть потратить. Деньги всё-равно потом нужно будет умножить на 3 и добавить 30% на непредвиденные расходы, но это будет потом. А сейчас надо взять блокнот или, кто посовременней, какой-нить ваннот и начать записывать мысли. Причём стоит писать всё что взбредёт в голову, лютый бред можно будет потом отфильтровать, а полезные идеи дадут почву для дальнейшего развития. Вообще записывать и документировать всё подряд очень полезно имхо. Времени и сил это занимает не так уж и много, но в будущем очень сильно может пригодиться.

Материалы. Их нужно будет много и в них нужно хоть что-то понимать. Разбираться в сортах цемента конечно не обязательно, но как минимум знать что для чего надо, на каких этапах применяется и т.д. Какие-то сведения можно подчерпнуть в интернетах, какие-то поспрашивать у работников, можно допросить консультантов в больших магазинах, особенно если они представители поставщика. Отдельно стоит обратить внимание на условия хранения, особенно это касается жидких материалов (клей, краски, лаки, etc.), их нельзя замораживать, а склады у нас никто не обогревает, поэтому в зимнее время нужно быть предельно осторожным.

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

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

Link | Leave a comment {8} |

Meltdown

Jan. 4th, 2018 | 01:03 pm

Почитал про этот ваш Meltdown. В двух словах - мы все умрём :D

В общем баг простой как валянок. Когда делаем загрузку из памяти, в нутри декодер разбивает её на, условного говора, два мю-опса: fetch и check. Первый собсна загружает из памяти в кеш что нужно, второй делает security check. По хорошему сначала всё нужно проверить, а потом уж грузить. Если проверка не прошла, то и все последующие инструкции не должны быть выполнены. Но в суровой реальности всё намного сложнее и на сцену выходит Out-of-Order Execution.

Берём следующий код:
1 ; rcx = kernel address
2 ; rbx = probe array
3 retry:
4 mov al, byte [rcx]
5 shl rax, 0xc
6 jz retry
7 mov rbx, qword [rbx + rax]


По хорошему он упадёт ещё на 4-й строчке, ибо нам читать из защищённого адресного пространства нельзя. Но есть несколько возможностей таки засунуть его в процессор, заставить спекулятивно выполнить, при этом нужный кусок из нашего тестового массива будет загружен в кеш что и позволит косвенным методом определить значение байта по нужному адресу памяти (банальная timing attack). Для новых процессоров это использовать TSX, для старых - засрать мозги предсказанию переходов.

Что доступно при такой атаке - на винде только виртуальное адресное пространство текущего процесса (user space + замапленный в него kernel space, что тоже не мало). На линупсе - вся физическая память (там сидят говноеды, но вы это и сами знаете).

Кто уязвим - интел точно. ARM и AMD потенциально, товарищи с ними не игрались, код для интела на них не работает, но всё указывает что потенциально возможно ибо работает у всех одинаково.

Как лечить - меньше мапить в адресное пространство кишков и не мапить физическую память (как это делают линупсоиды).

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

Link | Leave a comment {19} |

Legrand Mosaic

Dec. 2nd, 2017 | 04:01 pm

Меня просили рассказать и показать про сабж, так что слушайте, будут вам даже фотоньки снятые на дверной глазок в условиях недостаточного освещения :)

Любой ремонт начинается с выяснения что где стоит: телевизор, холодильник, станция подзарядки Теслы. Я есно раскидал технику по хате, но внезапно оказалось что на рабочем месте (именуемым компьютером) розеток нужно до неприличия много. Вот эти все ваши мониторы, системные блоки, колонки, витая пара и зарядка для айфона. Понятно что в максимальную 5-и постовую рамку всё это не всунуть, два места там сходу занимает USB зарядка и розетки для RJ-45. Т.к. я сразу нацелился на розетки-выключатели от Legrand, то листая их каталог наткнулся на линейку Mosaic. Это линейка больше для коммерческого использования, в ней механизмы отделены от суппорта, всё это приобретается отдельно, доступны различные размеры, монтируется друг в друга, вставляется в коробку и накрывается рамкой. Причём доступны размеры вплоть до 2x10 модулей, что очень круто. В итоге я решил три места в хате таки сделать на мозаике: два рабочих места для себя и жены, и зона возле телевизора, ибо там тоже подключается много всяких телевизоров, рессиверов, консолей и прочих зарядок. Все остальные розетки будут обычные Legrand Valena. Что ещё можно сказать про мозаик: из плюсов - большое разнообразие модулей, размеров, сделано всё очень качественно, суппорта металлические и покрыты пластиком, модули сидят плотно, выглядит суперски. Минусы - просто конская цена, в два-четыре раза дороже аналогичных механизмов у Valena, которая тоже не самая дешёвая серия. А если сравнивать с турцией-китаем... Дорого, но гибко, модульно и качественно.

Покупал я это всё у товарищей из Запорожья http://electro-king.com.ua/. Общался с ними по телефону и вайберу, толковые ребята. Понравилось что если чего-то нет на местном складе, то закажут и привезут из Франции, как собсна со мной и получилось. При "оптовом" заказе делают скидку, мне, например, дали 25% на валену.

Фотоньки ниже. В реальности оно всё выглядит намного круче и имеет это всё белый цвет, а не кремовый.

Вот вам фотоньки как обещалCollapse )

Link | Leave a comment {11} |

про слова

Nov. 27th, 2017 | 04:21 pm

Прогресс в IT очень замечательная штука. Она нам дал лёгкий доступ к порно и кучу новых слов смысл которых мало кто понимает, такие как нано-, AI, блокчейн, облачный. Но я так понимаю это просто времена такие. Современный nano-AI стартап основанный на технологии блокчейн в облаке вполне способен привлечь деньги инвесторов, даже если там интеллект присутствует только у уборщицы которая приходит два раза в неделю убрать опенспейс от разлитого смузи да крошек от маффинов. Ещё стоит определиться что же таки вкладывают в понятие интеллекта, просто потому что не у всякого биоробота он есть, а чего уж про железяку то говорить. И последнее. Во времена моего детства какие-то умные программы просто называли Экспертными Системами. Делали то они примерно то же что и сейчас, принимали какие-то решения на основании целого множества правил и не меньшего объёма входных данных, но звучит это конечно не так круто как Искуственный Интеллект.

Link | Leave a comment {24} |

Магические константы

Sep. 29th, 2017 | 08:32 am

Ничто так не бесит на этом глобусе как всякие магические константы передаваемые из поколения в поколение, из уст в уста и представляющие универсальное идеальное решение. Например в быту для рассчёта освещения гуляет цифра 20 Вт/м². Откуда она взялась и почему - никто не знает. Почему у неё такая стрёмная размерность привязанная к ширине конской задницы - не понятно. На сколько она отображает реальность - молодой человек, зачем вы морочите голову консультанту? Со всем нужно разбираться самому. Достаём СанПиН и считаем для какой-то абстрактной стандартной комнаты в стандартной хрущёвке времён позднего СССР. Я в целом исходил из требований того же СанПиН-а для всяких спален, а именно 150лк на рабочей поверхности, и у меня выходит цифра в 450 лм/м² для светлой комнаты, и 700 лм/м² для стандартной (я так понял это когда сэкономили на светлых обоях и вместо нормального окна амбразура). Легко заметить что 450 лм это яркость 40 Вт лампы накаливания, но т.к. в советской квартире доступны были только люстры, то яркость/мощность/конскую задницу смело можно урезать, дабы не сильно светило в одном месте. Природу таинственных 20 Вт вроде раскрыли.

И насчёт освещения - не экономьте. Даже не смотря на то что мои комнаты вполне тянут на светлые, я решил считать для них по худшему сценарию. Например для комнаты в 14 м² получаем итоговый уровень в 10 тыс. лм. При этом разбить освещение на две группы в соотношении 2:1 по яркости и завести на двухклавишный выключатель. У меня получается центральный светильник на 3300 лм, и вокруг него сеткой кучка поменьше саммарной яркостью 6400 лм. В итоге имеем три возможные уровня яркости в комнате, profit.

Link | Leave a comment {8} |

LED ламп

Aug. 7th, 2017 | 10:02 am

За пол года сдохло две из четырёх LED ламп. Первая сдохла месяца через три после покупки, вторая продержалась чуть больше 6. Статистика конечно так себе, но это лампы от разных производителей (безродный китай и германский китай), и в обоих сдохла электроника, первая начала моргать через минуту после включения (как нагрелась походу), а вторая светит тускло. Обе заменил на CCFL, пофиг что разгораются пол дня, зато не дохнут и работают годами. Так что с LED я пока завязываю: дорого, ярких ламп нет, дохнут.

Link | Leave a comment {10} |