Как стать автором
Обновить
52
0
Killy @Killy

Пользователь

Отправить сообщение

Мониторинг выполнения задач в IPython Notebook

Время на прочтение2 мин
Количество просмотров37K
Хотел бы поделиться простым, но полезным инструментом. Когда много работаешь с данными, часто возникают примитивные, но долгие операции, например: «скачать 10 000 урлов», «прочитать файл на 2Гб, и что-то сделать с каждой строчкой», «распарсить 10 000 html-файлов и достать заголовки». Долго смотреть в зависший терминал тревожно, поэтому долгое время я использовал следующий гениальный код:
def log_progress(sequence, every=10):
    for index, item in enumerate(sequence):
        if index % every == 0:
            print >>sys.stderr, index,
        yield item


Эта функция прекрасна, больше года она кочевала у меня из задачи в задачу. Но недавно я заметил в стандартной поставке Jupyter виджет IntProgress и понял, что пора что-то менять:

Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии11

DIY порошок для посудомойки: разбираем промышленные средства и улучшаем рецепт

Время на прочтение11 мин
Количество просмотров126K


Внимание! В рецепте с отбеливателем обнаружилась опасность коррозии металла! Не рекомендуется в стандартном применении!

Обзор экспериментов год спустя:
DIY порошок для посудомойки: как не растворить посуду и не повторить моих ошибок. Год экспериментов

В прошлой публикации мы создавали дешевый порошок для посудомойки из желудей и спичек кальцинированной соды и стирального порошка. В этой я расскажу о том, как можно его улучшить с помощью кислородного отбеливателя и где можно купить компоненты для более продвинутой версии. Будем делать упор на эффективности мойки, но даже при этом цена не выйдет за 100 рублей/килограмм. А еще будет рецепт ополаскивателя с себестоимостью в районе 1 рубля за литр. Как справедливо заметил amarao, занятие не для всех и многим проще использовать готовые таблетки. Но в подобных экспериментах с бытовой химией есть что-то от детства, первых опытов по смешиванию соды с уксусом и газировки с мятными конфетами. Так что ощутимая экономия здесь все-таки вторична. Будем развлекаться) Если кому-то лень читать весь текст — в конце поста будут подробные рецепты с рекомендациями.
Читать дальше →
Всего голосов 123: ↑123 и ↓0+123
Комментарии356

Почему Go — это плохо продуманный язык программирования

Время на прочтение9 мин
Количество просмотров88K
Это перевод статьи юзернейма tucnak с Medium, которая получила обширное обсуждение на reddit.com/r/programming.

image
Окей, заголовок действительно несколько громкий, признаю. Cкажу больше: я прусь от громких заголовков, все из-за внимания. В этой блогозаписи я постараюсь доказать тот факт, что Go это ужасно продуманный язык (спойлер: это так). Я уже играюсь с Go уже на протяжении нескольких месяцев, первый helloworld собрал, кажется, в июне. Математик из меня никакой, но с тех пор прошло уже что-то около 4 месяцев и я даже успел залить на Github несколько репозиториев и собрать немного звезд! Стоит также упомянуть, что у меня совершенно нет опыта применения Go в продакшне, так что любые мои слова о «поддержке кода» или «деплое» не стоит принимать за единственноверную истину.

Я люблю Go, я полюбил его как только впервые попробовал его. Я потратил несколько дней на то, чтобы принять идиоматику, смириться с отсутствием дженериков, разобраться с откровенно странным способом обработки ошибок и вы знаете, всеми этими классическими проблемами, так или иначе связанными с Go. Я прочел Effective Go, много статеек из блога Dave Cheney, следил за всеми новостями из мира Go. Я даже могу сказать, что я достаточно активный участник сообщетсва! Я люблю Go и ничего не могу с этим поделать — Go просто замечательный. Тем не менее, я считаю, что Go это ужасный плохо продуманный язык, который делает совершенно не то, что «продает».
Читать дальше →
Всего голосов 140: ↑114 и ↓26+88
Комментарии289

Calque — калькулятор, который удобнее, чем консоль браузера

Время на прочтение1 мин
Количество просмотров54K
Приветствую.

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

Однако для бытового использования на десктопе ничего удобнее, чем консоль браузера, по моему мнению, нет. В консоли можно использовать переменные, функции, работать с выражениями как с текстом — выделять, копировать и вставлять. Это удобно, и многие годы консоль верно заменяла мне калькулятор даже для самых простых операций.

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

Поиск чего-то похожего на Tydlig ничего не дал, и было принято решение писать свое приложение.

Что из этой затеи получилось:


Читать дальше →
Всего голосов 105: ↑105 и ↓0+105
Комментарии91

О разработке головок 3D FDM-принтеров.Часть 1

Время на прочтение27 мин
Количество просмотров22K
В конце 2013 года, после длительных размышлений и штудирования Интернета, я решился собирать3Д-принтер, в процессе сборки которого, я проникся идеологией «малого машиностроения» и, начиная с малого, занялся разработкой и модернизацией узлов своего принтера.

Такая часть принтера, как головка, оказалась достаточно загадочной. Имеется в виду, что подробно о принципах её конструирования не было слишком много написано, а в Сети пестрело жалобами на застревания и некачественный пластик. Сам я не испытал никаких проблем с головкой — вероятно потому, что купил сразу качественную головку от хорошего производителя.
Так или иначе, тема разработки головок меня заинтересовала. Я стал делать опытные экземпляры. Получилось вполне хорошо. Но, чем больше я углублялся в тему, тем больше раскрывалось в ней тонкостей и мелочей и тем больше интересного. Потом так сложилось, что я несколько месяцев разрабатывал головку и механизм подачи для ручного 3Д-принтера Lix Pen. Это добавило мне опыта и технических возможностей. Теперь я продолжаю изучать эту тему, считаю что у меня накопилось немало информации на эту тему и я хочу поделиться ею, если кому будет интересно.

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


Рис. 11 Головка Тип 3.1
ВНИМАНИЕ! Описанные ниже примеры принтерных головок — не товар, они не продаются, так как являются скоростными/рекордными/экспериментальными изделиями и никто их не выпускает.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии10

Интерполяция данных: соединяем точки так, чтобы было красиво

Время на прочтение7 мин
Количество просмотров161K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии44

Развёртывание приложений Qt в Windows

Время на прочтение6 мин
Количество просмотров96K

Вступление


Добрый день, уважаемые читатели! Совсем недавно я завершил разработку одного своего приложения на Qt, и мне захотелось создать профессиональную программу установки, чтобы всё было «как у взрослых». Как оказалось, сделать это непросто, учитывая, что на официальном сайте инструментария информации по развёртыванию почти нет. В данной статье рассмотрены некоторые этапы подготовки программ на Qt версии 5.2 или выше для распространения на компьютеры других пользователей. Итак, вот план руководства:

  1. Подготовка проекта Qt к развёртыванию
  2. Компоновка дистрибутива программы
  3. Подписание кода и создание установщика

Не будем терять времени и приступим к работе.
Читать дальше →
Всего голосов 35: ↑32 и ↓3+29
Комментарии11

Генерация LINQ to SQL кода для SQLite в .NET (C#)

Время на прочтение3 мин
Количество просмотров17K
На C# я пишу редко, и в основном все наши приложения и сервисы подключаются к источнику данных, используя MSSQL сервер или службы баз данных. И вот настало время написать приложение, используя не сервер, а локальную БД. Немного погуглив, я внезапно выбрал SQLite.

Предисловие


У всех наших заказчиков были требования к коду:
  • установленное именование переменных;
  • группировка кода (конструкторы, переменные, методы, события...);
  • табы и форматирование (каралось смертной казнью);
  • за самописные SQL запросы разработчик удалялся из команды.

Исходя из вышеперечисленного, для баз данных конечно же были использованы классы LINQ to SQL, связанные с реляционными объектами.
Читать дальше →
Всего голосов 6: ↑4 и ↓2+2
Комментарии8

LampTest.ru — тестирование светодиодных ламп

Время на прочтение4 мин
Количество просмотров60K
Рад сообщить, что cайт lamptest.ru (он же lamptest.com), над которым мы работали полгода, сегодня заработал в «боевом» режиме.



На сайте собраны данные по протестированным мной светодиодным лампам. Сейчас их там 102, но уже скоро добавится ещё пара десятков. На сайте уже есть данные по всем лампочкам Ikea, по большому количеству ламп Thomson, Navigator, Gauss.

Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии162

Bus Blaster — универсальный скоростной bit-bang интерфейс для терпеливых энтузиастов

Время на прочтение11 мин
Количество просмотров16K


Мне давно хотелось иметь какой-нибудь простой и универсальный аппаратный интерфейс с несколькими входными и выходными сигналами, функциональность которого определяется исключительно софтом, вроде достопамятного программатора PonyProg. И чтобы его можно было использовать не только как чтения/записи прошивок, но и для отладки программ через JTAG. При этом покупать что-либо промышленное, при моем нерегулярном баловстве с электроникой, избыточно и нерентабельно — требовалось что-то из серии «полуфабрикатов», на основе bit-bang.

Что такое bit bang и зачем он нужен
Кое-кто еще помнит, что в счастливые времена Windows 9x каждая системная плата и каждый ноутбук в обязательном порядке имели последовательный (COM) и параллельный (LPT) порты. В ту пору для организации интерфейса с микросхемой ППЗУ, служебными контактами мобильника или передней панели магнитолы достаточно было припаять к разъему порта несколько резисторов, диодов и транзисторов. Все остальное делали обычные пользовательские приложения, самостоятельно формировавшие сигналы нужного протокола путем выставления нулей или единиц на нужных выводах, и считывания сигналов на входах. У клятых буржуев это называлось bit-bang, а у нас — «дрыгоножество», «ногомашество» и т.п.

С переходом на 2k/XP возникли сложности с прямым доступом к портам ввода/вывода, но они успешно решались костылями вроде giveio. Гораздо сильнее портила жизнь более высокая фоновая активность в NT, из-за которой сложнее было выдержать стабильность передачи и приема.

Как известно, на современных компьютерах, тем более — ноутбуках, с аппаратными портами не густо, ибо большинству пользователей они не нужны. USB-адаптеры для подключения устройств с интерфейсами RS232 и Centronics (в просторечии — COM/LPT) хорошо работают лишь в рамках основного назначения, а делать на них «дрыгоножество» проблематично по целому ряду причин. Во-первых, большинство этих адаптеров умеет обрабатывать с хорошей скоростью только сигналы данных (те же Tx/Rx), а управляющие сигналы обрабатывает с большими задержками. Во-вторых, адаптеры различных производителей аппаратно несовместимы, а возможности нестандартного управления через драйвер производителя сильно ограничены. В-третьих, для передачи команд адаптеру почти все драйверы используют отдельные USB-пакеты, что ограничивает частоту смены состояний всего тысячей раз в секунду, чего для многих применений катастрофически мало.

К счастью, компания FTDI уже давно предлагает ряд решений для USB, ориентированных именно на скоростной обмен произвольными сигналами. Беглое изучение вопроса показало, что наиболее популярны в этом плане интерфейсы на микросхемах FT232H/FT2232H.
Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии18

Свой шаблон отклика-письма на HeadHunter (и moikrug) без Copy-Paste

Время на прочтение7 мин
Количество просмотров25K
Многим хорош сервис поиска вакансий hh.ru, но ищущий всегда найдёт, что усовершенствовать. К примеру, на сервисе есть поле для заполнения письма — ответа на вакансию, но нет элементарного шаблона оформления письма — заголовок, кратко о себе, ответы на требования по вакансии.

Если нет — надо сделать. Ведь специалист по JS не будет многократно заниматься Copy-Paste-операциями, когда знает, что их можно автоматизировать, даже не обременяя просьбами службы сайта. Есть такие инструменты, как пользовательские скрипты.

UPD 12.1.2016: Скрипт расширен на сайты career.ru (клон HH с той же клиентской базой), itmozg.ru, superjob.ru.

Вначале, конечно, пришлось покопировать, пока не выявились закономерности и не получился юзерскрипт hhFiller. Шаблон отклика, на мой взгляд, должен содержать:
1. Заголовок-приветствие. После него пойдёт сразу рукописный текст, живой ответ на вакансию в 2-3 или более строчек.

Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии3

USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega

Время на прочтение4 мин
Количество просмотров21K
article-v7-28.jpg

Наша лаборатория занимается, в числе прочего, измерением электросопротивления различных образцов. Основные рабочие лошадки нашей измерительной установки — цифровые мультиметры американской компании Agilent, такие как 34401A.

Кроме этого, долгое время лежали неиспользуемыми несколько стареньких, но рабочих вольтметров В7-28 (один из них на фото). Данный вольтметр, правда, уступает по точности и быстродействию «американцам», но всё равно достаточно хорош: точность до 5 десятичных цифр, приемлемая шумность, экранированные входы, а главное — возможность дистанционного управления с ПЭВМ (которые теперь зовутся ПК).

Использовать их не получалось по следующим причинам:
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии28

НЕ Arduino за 55 центов

Время на прочтение3 мин
Количество просмотров104K


Эксперимент с прикручиванию к дешевым микроконтроллерам ATTiny загрузчика и среды разработки Arduino был достаточно удачным. Конечно, с AVR неплохо живется и без Arduino. Но хорошо, когда есть возможность выбора. А потом я вляпался в STM32 и заковырялся в библиотеках и громоздких конструкциях инициализации портов. Спасением ARM-«чайника» стал проект ARM mbed. Лично мне он позволил просто взять и начать работать с STM32.

Но мигать светодиодом на плате Nucleo надоело очень быстро. Отложил я ее, ибо слишком много ножек и наворотов, и взялся за Maple Mini (STM32F103CBT6 с минимальной обвязкой). Тоже все довольно легко и просто — сервоприводы крутятся, датчики работают, экранчики показывают — все популярные библиотеки, знакомые ардуинщикам, в mbed имеются.

А третий заход отчасти повторял «Arduino за 1$». О нем я и расскажу подробно. Идея такая: хочу ARM за копейки. Открываю Aliexpress и нахожу STM32F030F4P6 за 55 центов за штучку при покупке пучка (10 чипов).
Читать дальше →
Всего голосов 49: ↑48 и ↓1+47
Комментарии26

GammaRay — средство интроспекции Qt-приложений

Время на прочтение4 мин
Количество просмотров15K
Фреймворк Qt предоставляет неплохие средства разработки — входящая в него IDE Qt Creator включает дизайнер, отладчик, профайлер и другие удобные вещи. К сожалению, даже со всем этим иногда не очень понятно, почему приложение в данные момент выглядит так, как выглядит: чего-то не видно, что-то выглядит не так, как ожидалось, где-то неподходящий размер шрифта или неверная картинка.

Часть этих проблем может быть решена в Qt Designer, но только часть. Qt Designer имеет несколько существенных недостатков: во-первых, он неверно отображает положение Qt Quick компонентов в случае активного использования Javascript при расчете их координат и размеров, во-вторых в дизайнере мы видим состояние только «пустой» формы, без загруженных в неё данных. В общем, очень не хватает чего-то вроде инструментов разработчика в любом современном браузере: чтобы можно было посмотреть всё дерево компонентов, найти нужный, увидеть его положение относительно других, свойства, поправить на лету что-то, подобрать цвет\шрифт\размер, увидеть какие обработчики повешены на события и т.д.

И такой инструмент в мире Qt появился! Встречайте — GammaRay, средство интроспекции приложений на Qt. GammaRay понимает, что такое Qt, из чего состоит ваше Qt-приложение, как в нём взаимодействую компоненты, как они выглядят, как генерируются и обрабатываются события и т.д. Давайте посмотрим, что умеет GammaRay.


Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии6

Программируем микроконтроллеры в QtCreator

Время на прочтение9 мин
Количество просмотров25K


Почему-то в интернете мало документации про qbs, и я решил немного исправить эту ситуацию. Попробую описать в виде повествования, что необходимо сделать, что бы в QtCreator можно было компилировать (и не только) что угодно под что угодно.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии25

Простая схема для оценки коэффициента пульсаций

Время на прочтение3 мин
Количество просмотров12K
В комментариях к серии моих публикаций про светодиодные лампы не раз звучал вопрос о том, как померять коэффициент пульсаций без применения хитрых приборов вроде осциллографа или чего-то еще более специального. В связи с этим я предлагаю простую схему для примерной оценки коэффициента пульсаций при участии компьютера. Схема изначально разрабатывалась с учетом требований предельной простоты и дешевизны, и потому не отличается особо хорошими характеристиками; тем не менее, грубо оценить коэффициент пульсаций она поможет.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии6

Немного об основах схемотехники светодиодных ламп

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

image

Читать дальше →
Всего голосов 65: ↑64 и ↓1+63
Комментарии72

Хроники лаборатории: крыса в полимерном шлеме, спектральный анализ банкой чипсов и синяя изолента

Время на прочтение10 мин
Количество просмотров48K

Знакомьтесь — подопытная крыса Теодор-младший.

Как многие знают, я сменил род деятельности и теперь основную часть времени я занимаюсь выращиванием суперсолдат и порабощением мира стволовыми клетками. Сразу хочу предупредить — работа в нашей лаборатории сопряжена с NDA, поэтому некоторых вещей я коснусь лишь поверхностно.
Когда вы занимаетесь наукой, то очень часто возникает необходимость решать сложные и нестандартные задачи. Какими бы глянцевыми и красивыми ни были ваши портативные коллайдеры, любовно приборетенные для разработок, иногда возникает необходимость создать что-то «на коленке» для проверки какой-то идеи. Особенно остро это ощущается в госучреждениях, где, несмотря на зачастую прекрасное финансирование, закон вынуждает организовывать межгалактический тендер на приобретение карандаша. Поэтому я расскажу вам про синюю изоленту, спектральный анализ с помощью банки чипсов и художественную лепку экзоскелета для крысы-мутанта. А заодно узнаем, стоит ли топить сухой лед в унитазе и можно ли потом это пить.
Дальше очень-очень много фотографий и текста
Всего голосов 81: ↑80 и ↓1+79
Комментарии71

Как я пытался лечиться по ДМС, а получил 3D модель головы и чуть больше здоровья за свои деньги

Время на прочтение10 мин
Количество просмотров34K
Ситуация, с которой наверное сталкивались многие обладатели полиса ДМС с оплатой стоматологии, когда страховая отказывается оплачивать лечение зуба. Стоматолог отправляет с обострением домой — «записывайтесь на прием», не говоря ни слова про то что следующий прием и лечение будут не по страховке.



В заметке расскажу как удалось сделать КТ челюсти с записью на диск, что такое формат данных DICOM и с помощью каких open source программ с ним можно работать. А также как и где мне удалось найти стоматологическую помощь.
Читать дальше →
Всего голосов 44: ↑39 и ↓5+34
Комментарии79

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность