... точнее, нашёлся дивный способ записать таки захват окружения в лямбде не порождая промежуточных сущностей:
> i = 42
> f = lambda x, i=i: x+i
> f(0)
42
> i = 5
> f(0)
42

Всё. Но, holy fsck, почему это не упомянуть прямо в документации? Рядом, непосредственно с. Смотрите дети: это лямбда, это кложа. Надо late binding — делай так. Надо early — i=i и получайте сколько унесёте.
Поскидывать старое барахло, ага. Жалко просто так выбрасывать, пусть кому-нибудь послужит, ага.

Короче, они меня прокляли. Их модераторы захотели чтобы я подтвердил что мой телефон — это не телефон колл-центра, для чего я должен позвонить с него по некоему волшебному номеру 8-800-600-**** (ну кто вставал тот знает) и тем доказать что я не робот. Ну и на этом всё, их система в упор не видит звонков, объявление продолжает отклоняться. Пятое подряд обращение в техподдержку привело к тому, что теперь техподдержка просто зачитывает мне инструкцию и вешает трубку (ну или закрывает чат, в зависимости от).

Как это называется? Правильно, ма-лад-цы! Уязвили спамера, не дали облапошить малограмотных сограждан.

PS. Цена вопроса — 1500р :) а возни как будто я айфон продаю.
Меня тут жизнь заставила потрогать компилятор XC8 от майкрочипа для мелких контроллеров. Это, я вам скажу, целый отдельный мир в себе. Зато я теперь понимаю, откуда на форумах тонны говнокода с двоичными или шестнадцатиричными константами, а разбуженный внезапно ночью пикоман будет бормотать что-то типа "0xA8 в регистр 0xBB включает режим синхронизации SPI по переднему фронту". Они, мать их, похоже что учат эти константы, потому что иначе никак.

Трудности начинаются с самого начала — с доступа к периферийным регистрам. Суть в том, что нормальные люди не пытаются изобретать колёса от велосипеда и тупо перечисляют в заголовочных файлах битовые маски и смещения, что приводит к самоочевидному коду типа "CTRL_A = (1<<OPTION1) | (1<<OPTION2);"

Но это нормальные люди. Пикоманы же пытаются сделать "удобно" и делают промежуточные структуры с битовыми полями. Тот же код будет выглядеть как "CTRL_A.option1=1; CTRL_A.option2=1;", но при этом, как всегда, есть нюанс — каждый бит будет ставиться отдельной инструкцией. Семь бит — семь команд.

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

Альтернатива? Конечно есть. Можно записать целиком слово в регистр, для этого надо посмотреть в даташит, выяснить позицию нужных битов, просуммировать это всё у себя в голове и написать простую и понятную команду:
CTRL_A = 0xA6;

Ну, или, для эстетов
CTRL_A = 0b00100010;


Пикоманы, как есть пикоманы.
Починяю мышку. МЫШКУ, КАРЛ! Перепаиваю кнопки и энкодер колеса, отмываю, чищу и крашу корпус жидкой резиной.

А всё почему? Потому что удобных мышек под широкую ладонь нет нихрена. Купленный на замену Dexp MR0101-s (он же SmartBuy SBM-613) оказался полным дерьмом даже по сравнению с тем что было — глючит то ли сенсор, то ли радиоканал (мыша периодически "примерзает" к месту), юзеры пишут что через пару недель начинает глючить и скрипеть еще и механика. Так и придётся тянуть старого полумёртвого Sven'а....
TL;DR блок управления стиральной машины Indesit WISN100 называется EDT0117.11. Схема ищется в интернете по этому же ключевому слову.

сцеживаю яд по поводу копрономики и её продуктов )

Короче говоря. «Запрограммированного отказа» может и не существует, как нас пытаются убеждать некоторые товарищи. А хуерукие пидарасы и одноразовые изделия таки да.

Ролик в тему (нецензурно, естественно):
Я тут всё пытаюсь OpenSCAD к чему-нибудь полезному приспособить, и как-то результаты пока не радуют. Не то чтобы оно прям совсем не работало, глючило или, там, падало. Нет, работает. Не падает. И люди ж как-то делают свой дизайн в нём (как — мы к этому еще вернемся), но есть пара невероятно всратых "особенностей", которые превращают пользование им вот в это самое. Хуже всего, что это особенности принципиальные, которые не исправить никаким разумным количеством программерской работы и без ломки совместимости.

стена текста, в основном нытьё )

Резюме: на самом деле абсолютно понятно откуда эти "особенности" взялись. Авторы просто однажды сказали себе: "а что если мы сделаем простой язык описания геометрических примитивов, прилепим туда несложную шаблонизацию и макры, и назовём это CAD'ом, взлетит?". Взлетело. Только нужно чётко понимать, что данном случае D обозначает "drawing", а не "design". И если вы точно знаете чего хотите, и сможете уложить это в top-down подход, то у вас всё получится. Если нет — ну, YMMV.

А если вы хотите не переписывать по двадцать раз одно и то же, а хотите писать statement'ы вида "хочу отверстия под болты такие же как во-о-о-н там, но не ближе X мм от стенки", то вообще непонятно куды бечь. Сразу в Haskell?
Cinnamon 4.4 удалось сделать то, что не удавалось ещё ни одному DE на протяжении восьми последних лет — сломать мне скринсейвер, которым у меня служил glslideshow с автоматически пополняемой коллекцией картинок из APOD. Просто напросто теперь запуск сторонних хаков не благословляется, а скринсейвером служит тщательно и любовно написанный черный экран с часами с единственной кастомизацией — можно выбрать размеры и гарнитуру шрифта. Вероятно, это и есть тот самый clean streamlined design о котором так много.

Сука, как же задолбали рисователи картинок по пикселям со своим охуенным мнением "юзеру это не нужно".
Г-ди, они и в make прикрутили возможность загружать плагины из dll (и еще скриптовать дополнительно на guile). Кто-нибудь может объяснить — зачем? Если для емакса я в принципе понимаю зачем, для bash могу себе хотя-бы примерно-теоретически объяснить, но тут-то нафига? Это помимо традиционного уже "закопайте стюардессу"...
... Или Tool Driven Design, кому как больше нравится...

Как-то вдруг внезапно осознал, что всё что стоит за концепцией, например, "инкапсуляции" (как это понимается обычно в современном ООП) — всего лишь чья-то боль по поводу невозможности быстро найти и заменить все вхождения паттерна А на паттерн Б.

Ну, то есть, натурально, какой-нибудь восемьдесят восьмой год, сидит бородач в свитере перед монитором и кодовой базой в 100K-200K SLOC и понимает, что вместо "foo->bar = 640" надо бы писать какое-нибудь "updateGeometry(&foo, 640, 480)". И с инструментарием уровня турбо си восемьдесят восьмого года это — ЖОПА. Ну, каждый кто с подобным встречался поймёт. Все мы знаем, что прижилось решение просто запретить программерам писать "foo->bar = 640".

И вот сейчас в исторической перспективе становится понятно, что возникшую проблему можно было решить миллионом разных способов. Во всяком там энтерпрайзе куда более злобные изменения прокатывают под названием "рефакторинга", а возникающая при этом боль сглаживается контролем версий, разными там автотестами, итд итп. Чего в восемьдесят восьмом году просто не было, или было в рудиментарном виде. И если бы что-то из этого успело чуть пораньше, то никакой "парадигмы" ООП могло бы и не быть, а просто была бы рекомендация уровня best practices делать всё на ADT. А если не догадались сразу — ну чтож, бывает, линтер со статическим анализатором в помощь.

Интересно, сколько там, внизу, еще живет поспешных, неуклюжих, ad hoc решений заматеревших со временем в "концепции"?
Всплыло щас в одной дискуссии:
$ python
Python 2.7.13 (default, Sep 26 2018, 18:42:22) 
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def func(a, lst=[]):
...   lst.append(a)
...   return lst
... 
>>> print(func(1))
[1]
>>> print(func(2))
[1, 2]


Ну, вы поняли, да? Это вам не просто сайд-эффекты, тут трава (или грибы) гораздо забористей.

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

Вот список претензий:

0. Жуткий оверинжиниринг при небогатых в общем-то возможностях. BOM cost по диджикею (без учета мелкой пассивки, бо лень) составляет порядка $75, при этом некоторые компоненты уже last time buy, а к каким-то уже надо искать замену. За $75 можно купить TS-100 и горя не знать, а к этому BOM понадобятся еще платы, какой-никакой корпус и первичный источник. Всё вместе выйдет баксов в 200, а это уже цена неплохой фирменной станции.

дальше нудно и скучно )

Доктора Дью на них нет, самодельщики хреновы....

PS. Из 5N44P/unisolder-notes: If you want to modify the software you'll have to compile it with XC32 v1.33 compiler (paid), adding the "s" option to the optimization. Это приговор щемта. Закопать.
... все что делают т.н. "дистрибутивы" (линуксовые) и прочие системы упаковки софта — натужно, медлено и со скрипом, в ручном режиме восстанавливают метаданные, успешно проебываемые традиционными тулзами. Можно переложить часть заботы на пользователя (gentoo), можно просто закрыть глаза на проблему (slack, bsd), можно строить систему устойчивую к (nixos кажется, и что там Поттеринг строит). Но сам факт лежащий в корне никуда не денешь.
Ради расширения сознания и вообще кругозора решил засмотреть курс по Altium Designer от Fedevel Academy под руководством широко известного в узких кругах Robert Feranec.

Не выдержал. Я наверное дропну. Еще только второй час, а у меня уже душа рвется на волю в пампасы — настолько нудно. Представляете, сидит мужик перед монитором (нам покаызывают и мужика и монитор) и дрочит сплошным потоком, БЕЗ объяснений что, зачем и почему, командует:
— Ткните в этот пункт меню левой кнопкой мыши". Ткните правой. Еще правой. Теперь левой, проведите линию, левой, левой, еще линию, левой, эскейп. Теперь идите на диджикей и вбейте там в поиск вот это число.

ЧСХ, народ прется и терпеливо повторяет за ним... кхм... упражнения. На вопросы мужик отвечает в духе "вы там что-то неправильное скачали", хотя вопрос про поведение программы.

И это вроде как считается одним из лучших курсов.

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

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

И вот что-то у меня по этому поводу сложные ощущения — с одной стороны понятно, что растущие аппетиты софта вынуждают производителей железа за ним бежать, шо аж шуба заворачивается и, соответственно, тренд на удешевление железа и общий рост вычислительных мощностей когда-то должны были сойтись. Они и сошлись в одном чипе стоимостью в 10 баксов. Аналогичное ранее произошло с digital audio, когда мультимедийный компьютер был вещью в себе, стоимостью вдвое от обычной, а теперь звук с "cd-качеством" разве что кофеварка не играет.

С другой — ЧЕТВЕРТЬ ресурсов, Карл! И это только по памяти, использование cpu, судя по всему, близко к 100%. Только на рисование кавайных интерфейсов, а еще и работать когда-то надо (впрочем какое там "работать", это ж IoT, там всей работы только позвать большого брата). С третьей стороны подобные рассуждения есть гнилое байтоёбство: какая разница каким методом решается задача, если она решается. Тратить человеческое время только для того чтобы железка меньше грелась? Подточат наиболее шероховатые моменты, и в продакшн!

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

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

Короче, будем посмотреть.




1. Не то чтобы совсем не ожидал, просто очень не хотелось верить.
2. Исчезающее ныне за почти полной ненадобностью искусство — писать портабельный софт.
Оригинал взят у [livejournal.com profile] boud в Безопасность - прежде всего.
Не стоит возиться с расплавленными металлами ( привет, Серёжа), если нет понимания чем это чревато.







Какое-то странное поветрие: разные придурки, которым просто интересно посмотреть что будет, производят в товарном количестве различные опыты. Хотя пятиминутное включение головы, могло бы подсказать, что ничего интересного, слишком унылый замысел у этих "опытов". Одни вот поливают медью всякое разное (варианты: сгорит, расплавится, вскипит, ничего), другие погружают раскаленный никелевый шар в различные вещества (варианты: сгорит, расплавится, вскипит, ничего), третьи прожигают лазером (варианты:... ну, вы догадались). Четвертые чуть пооригинальнее — топят всякое разное в ртути — и тут с вариантами тоже негусто, либо утонет, либо нет.

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

PS. Нет, я такое не ищу, оно само периодически в рекомендациях всплывает рядом с другими вполне научными вещами. Это, кстати, к вопросу о влиянии искуственного интеллекта (или его имитации) на цивилизацию — кто-то еще всерьез верит, что скайнет будет изобретать механических чебурашек, "воевать" там как-то с человечеством? Да нихрена, достаточно будет слегка подкрутить алгоритм рекомендаций.

TIL...

Aug. 22nd, 2015 03:50 am
... что systemd не понимает кучу опций в crypttab, в частности keyscript. Что, если вам не повезет, может привести к полной незагружабельности машины. А если повезет — будете просто вводить пароли N раз, сколько есть дисков в crypttab'е.

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

PS. Как это обходить написано здесь.

труба

Jul. 10th, 2015 12:13 am
А где в youtube настройка "никогда больше не видеть этого идиота"? Алсо, тоже самое для тоже самое для бредовых роликов про "запретные тайны вселенной".
Из последней беседы:

1. "Чем вам особенно нравится программирование?"
2. "Что наиболее отличает, по вашему мнению, профессионального
программиста от любителя?".
http://habrahabr.ru/post/253811/

Через несколько лет хипстеры программисты-теоретики обнаружили, что реальные системы устроены несколько сложнее, чем об этом писалось в учебнике.

Особенно показательна в этом смысле история с pid 1 в докере, когда внезапно у хипстеров оказалось что линукс — это не только ядро, но еще и init-подсистема, и обвязка вокруг неё…
Типарецензия:

СЛИШКОМ МНОГО КОТОЁБСТВА !

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

Katzendreck. Не читать.

Profile

ex0_planet

April 2023

S M T W T F S
      1
234567 8
910111213 1415
16171819202122
23242526272829
30      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 24th, 2026 09:54 pm
Powered by Dreamwidth Studios