Pull to refresh
14
0
Никита Цымбал @nesferatos

User

Send message

ORM или объектно-реляционный проектор

Reading time6 min
Views24K
Сегодня мы предлагаем вашему вниманию отрывок из книги Сергея Тарасова «Дефрагментация мозга. Софтостроение изнутри», которая готовится к выходу в нашем издательстве.

Сокрытие базы данных или как скрестить ёжа с ужом


Упомянув один из крупнейших столпов современного софтостроения — мир ООП, нельзя обойти вниманием и другой — мир реляционных баз данных. Я намеренно вставил прилагательное «реляционные» применительно ко всем основным СУБД, хотя ещё в 1970-х годах такое обобщение было бы неправомерным.

Тем не менее, именно реляционным СУБД удалось в 1980-х годах освободить программистов от знания ненужных деталей организации физического хранения данных, отгородившись от них структурами логического уровня и стандартизованным языком SQL для доступа к информации. Также оказалось, что большинство форматов данных, которыми оперируют программы, хорошо ложатся на модель двумерных таблиц и связей между ними. Эти два фактора предопределили успех реляционных СУБД, а в качестве поощрительной премии сообщество получило строгую математическую теорию в основании технологии.

Читать дальше →
Total votes 36: ↑30 and ↓6+24
Comments50

Подготовка будущих биотехнологов

Reading time9 min
Views3.2K
image

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

Споры вокруг ГМО, а также непрекращающиеся научно-этические дискуссии о правомерности вмешательства человека в «дела Природы / Бога», оставим философам. Констатируем лишь, что профессиональная компетенция современного биолога, биотехнолога, биоинформатика и генетика немыслима без умения исследовать и, при необходимости, изменять гены. Уже в школе, а позже в университете, биотехнологические опыты и эксперименты требуют от учеников и студентов постановки четких задач, понимания методологии эксперимента, способности анализировать данные. Всё это развивает любопытство и уверенность, создает фундамент для дальнейшего изучения вопросов и проблем, связанных с научными исследованиями. Мой ПЛАН-КОНСПЕКТ основан на 3-х опытах, проведенных с помощью реактивов BioRad и стандартного оборудования, необходимого для проведения ПЦР-анализов. Но, конечно, можно использовать любые другие КИТы для детекции ГМО. Все нюансы проведения эксперимента (протоколы) детально изложены в сопутствующей к реактивам документации, поэтому подробно останавливаться на них я не буду. Итак, план-конспект несет в себе 2 названия: ПЛАН – потому что требуется четко и поминутно спланировать содержание урока, и КОНСПЕКТ – ибо необходимо заранее подумать, какой материал преподать детям и на чем сакцентировать внимание, для того чтобы полностью раскрыть цель проводимого эксперимента.

План


Опыт рассчитан на два занятия.

Занятие первое:

1. Теоретическое ознакомление учащихся с основами стратегии выявления ГМО (мишеней для детекции и идентификации).
2. Выделение ДНК из продуктов питания (школьник или студент приносит любой продукт на выбор).
3. Проведение полимеразной цепной реакции.

Занятие второе:
4. Гель электрофорез и дискуссия.
5. Заключительное слово учителя.
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments14

Умная кормушка: Machine Learning, Raspberry Pi, Telegram, немножко магии обучения + инструкция по сборке

Reading time15 min
Views38K
Всё началось с того, что жена захотела повесить кормушку для птиц. Идея мне понравилась, но сразу захотелось оптимизировать. Световой день зимой короткий — сидеть днём и смотреть на кормушку времени нет. Значит нужно больше Computer Vision!



Идея была простой: прилетает птичка — вжуууух — она оказывается на телефоне. Осталось придумать как это сделать и реализовать.
В статье:
  • Запуск Caffe на Raspberry Pi B+ (давно хотел это сделать)
  • Построение системы сбора данных
  • Выбор нейронной сети, оптимизация архитектуры, обучение
  • Оборачивание, выбор и приделывание интерфейса

Все исходники открыты + описан полный порядок развёртывания получившейся конструкции.
Читать дальше →
Total votes 73: ↑72 and ↓1+71
Comments58

Внедряем OSGI на платформе Karaf

Reading time11 min
Views25K

OSGI это не сложно


Я много раз встречал мнение, что OSGI это сложно. И более того, у самого когда-то такое мнение было. Году в 2009, если быть точным. На тот момент мы собирали проекты при помощи Maven Tycho, и деплоили их в Equinox. И это действительно было сложнее, чем разрабатывать и собирать проекты под JavaEE (в тот момент как раз появилась версия EJB 3, на которую мы и переходили). Equinox был намного менее удобен по сравнению с Weblogic, например, а преимущества OSGI тогда мне были не очевидны.

Зато потом, через много лет, мне пришлось на новой работе взяться за проект, который был задуман на основе Apache Camel и Apache Karaf. Это была не моя идея, я давно знал к тому моменту про Camel, и решил почитать про Karaf, даже еще не имея оффера. Почитал один вечер, и понял — вот же оно, простое и готовое, практически то же самое решение некоторых проблем типового JavaEE, аналогичное которому я когда-то делал на коленке при помощи Weblogic WLST, Jython, и Maven Aether.

Итак, допустим вы решили попробовать OSGI на платформе Karaf. С чего начнем?
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments51

Железнодорожно-ориентированное программирование. Обработка ошибок в функциональном стиле

Reading time11 min
Views20K

Как пользователь я хочу изменить ФИО и email в системе.

Для реализации этой простой пользовательской истории мы должны получить запрос, провести валидацию, обновить существующую запись в БД, отправить подтверждение на email пользователю и вернуть ответ браузеру. Код будет выглядеть примерно одинаково на C#:

string ExecuteUseCase() 
{ 
  var request = receiveRequest();
  validateRequest(request);
  canonicalizeEmail(request);
  db.updateDbFromRequest(request);
  smtpServer.sendEmail(request.Email);
  return "Success";
}

и F#:

let executeUseCase = 
  receiveRequest
  >> validateRequest
  >> canonicalizeEmail
  >> updateDbFromRequest
  >> sendEmail
  >> returnMessage
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments15

Трудности на пути создания «универсальной» метамодели для моделирования предметных областей

Reading time5 min
Views10K
Для создания модели предметной области сначала строится модель наших представлений. Описание наших представлений содержится в метамодели (например, в нотации BPMN). Метамодели, в свою очередь, строятся на основе мета-метамодели. Однако, наши представления имеют очень непростую структуру, которая до сих пор не имеет формального описания. Поэтому построение метамодели и мета-метамодели сильно затруднено. Попытку описать эту структуру предприняли греки, когда придумали основы логики. Способы нашего мышления изучали математики, когда столкнулись с парадоксами, пытаясь построить основы своей науки. Казалось бы, прогресс есть, но по какой-то причине, остановившись на формальном описании инструментов логического вывода, математики не сделали попытку применить полученные наработки к моделированию нашего мира (наверно, потому что для них – это прикладная задача, не вызывающая интереса).



В итоге те принципы, на основе которых создаются нотации и языки моделирования предметных областей, выбираются разработчиками относительно произвольно. Понятно, что созданные таким образом языки моделирования имеют достаточно ограниченную область применения. Эту область должны были бы описать создатели языка, но разработчики, как правило, это требование игнорируют.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments56

Qmpot — программируемый звуковой редактор

Reading time15 min
Views20K


Первым звуковым редактором, который я увидел в своей жизни — был Фонограф (sndrec32.exe) в Windows 98. Недолго я игрался с ним, записывал до 1 минуты звука с микрофона (потом запись прерывалась) и прослушивал полученное. А еще переконвертировал звуки из одного качества в другое.

Вторым звуковым редактором, который я увидел — был Cool Edit Pro 2000 (который теперь называется Adobe Audition). Но когда я порылся в нем достаточно — я был расстроен, эту штуку называют «звуковой редактор», но она только редактирует звук. В ней нельзя написать музыку с нуля. В ее наследнике — Adobe Audition, правда, позже добавили систему дорожек, в которые можно понапихать loop-ов и наделать музыки из них.

Потом я еще увидел Cakewalk Pro Audio (Cakewalk Sonar), Fruity Loops, Sound Forge и т.д.

Но еще с того 1998-2000 года во мне затаилось желание создавать звук и вставлять в него любые ноты в любые места во времени. Причем делать это как в простом режиме («воон туда эту ноту запихай-ка»), так и в более сложном («зажмем этот аккорд, сыграем в этом стиле, потом другой аккорд, сыграем его в другом стиле»).

И год с лишним назад, в декабре 2013 года я начал делать этот редактор.
И что же вышло из этой затеи?
Total votes 41: ↑36 and ↓5+31
Comments48

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

Reading time5 min
Views277K
В очередной раз отмывая раковину от рыжих пятен хлорного железа, после травления платы, я подумал, что пришло время автоматизировать этот процесс. Так я начал делать устройство для изготовления плат, которое уже сейчас можно использовать для создания простейшей электроники.

image

Ниже я расскажу о том, как делал этот девайс.
Читать дальше →
Total votes 161: ↑161 and ↓0+161
Comments164

Собираем лазерный проектор из доступных деталей

Reading time7 min
Views87K
UPD: Добавлены файлы платы с ЦАП на GitHub

Изначально я планировал сделать Лазерную арфу, но пока получился промежуточный результат — устройство, которое можно использовать как лазерный проектор — рисовать лазером различные фигуры, записанные в файлах формата ILDA. Я в курсе, что многие, кто берется за сборку лазерного проектора, в качестве устройства, управляющего гальванометрами (так и не понял как лучше перевести на русский сочетание “galvo scanner"), используют дешевые слегка модифицированные звуковые платы для компьютера. Я пошел иным путем, так как в конечном счете мне нужно будет полностью автономное устройство, которое может работать без компьютера.



Посмотрим из чего состоит мой лазерный проектор. Стоимость всех деталей составила около 8000 руб, из которых больше половины — это 70mW лазерный модуль.
  1. Гальванометры и драйверы к ним для отклонения луча лазера по осям X/Y
  2. 532нм 70mW лазерный модуль с питанием от 5В Dragon Lasers SGLM70
  3. Texas Instruments Stellaris Launchpad
  4. Самодельная плата с ЦАП AD7249BRZ
  5. Блок питания

Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments10

Бутлоадер с AES-128 и EAX на AVR Assembler в 1024 байта

Reading time23 min
Views79K

Или как я перестал бояться и полюбил ассемблер

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

Хорошая мера защиты — обновления программного обеспечения. Китайские клоны автоматически отмирают после каждой новой прошивки, а лояльные пользователи получают нашу любовь, заботу и новые возможности. Робин Гуды при таком раскладе, естественно, достанут свои логические анализаторы, HEX-редакторы и начнут ковырять процесс прошивки с целью ублажения русско-китайского сообщества.

Хоть у нас и не было проектов, которые требуют подобных мер защиты, было понятно: заняться этим надо, когда-то это пригодится. Погуглено — не найдено, придумано — сделано. В этой статье, я расскажу, как уместить полноценное шифрование в 1 килобайт и почему ассемблер — это прекрасно. Много текста, кода и небольшой сюрприз для любителей старого железа.
Читать дальше →
Total votes 152: ↑151 and ↓1+150
Comments75

Стражи ночи

Reading time9 min
Views81K
Будучи высококвалифицированным исследователем, я потратил немало времени на продвижение науки вперёд. Но я родился на Юге и искренне убеждён, что прогресс — это выдумка, и что нужно готовиться к Судному дню, к жатве того, что мы посеяли и к появлению быстрых зомби, медленных зомби, и даже вежливых зомби, которые обращаются к вам «сэр» или «мадам», но в итоге пытаются съесть ваш мозг дабы заполучить ваши навыки. Когда нагрянет революция, нужно быть готовым; поэтому в моменты тишины и покоя, когда я не произвожу очередной прорыв в науке, я размышляю над тем, что же я буду делать, когда прогноз погоды изменится на «РЕКИ КРОВИ ЦЕЛЫЙ ДЕНЬ ДО СКОНЧАНИЯ ВРЕМЁН».

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

Но! Но… Самым важным членом моей банды будет системный программист, ибо в гоббсовском кошмаре невероятных масштабов умеющему отладить драйвер устройства или распредёленную систему человеку можно доверять; системный программист видел ужасы Вселенной и понимает безысходность бытия. Системный программист писал драйверы для устройств, прошивку которых создавал то ли пьяный ребёнок, то ли трезвый карась. Системный программист отлавливал проблему с сетью через восемь машин, три часовых пояса и с дружеским визитом в Омск, откуда ее перенаправили в левое переднее копыто той лошади, что избавила Трою от перенаселения.1 Системный программист читал исходники ядра для лучшего понимания процессов мироздания и видел комментарий «И ЭТО РАБОТАЕТ ЛОЛ» в коде планировщика, и не смеялся он, но плакал; и отправил он патч ядра для восстановления баланса Силы и устранения инверсии приоритетов, что приводила к зависанию MySQL. Системный программист знает, что делать, когда общество падёт, потому что он уже живет в мире, где царит беззаконие.
Читать дальше →
Total votes 157: ↑136 and ↓21+115
Comments50

Делать hardware стартапы становится проще

Reading time6 min
Views78K
Компьютерная революция, не изменяя закону Мура, меняет наш мир последние три десятилетия. Вычислительная техника продолжает переворачивать наши представления о том, каким должен быть труд, отдых, коммуникации, экономика и вообще вся наша цивилизация. Однако и «бесполезных» сервисов в последнее время появляется все больше (фотошеренги с геолокацией), и для меня это признак того, что предельная полезность компьютерных технологий начинает уменьшаться.

Не пришло ли время для следующего технологического уклада, который позволит вывести цивилизацию человеков на качественно новый уровень? Судя по интересу со стороны государств и крупных корпораций (aka Google), да и просто с точки зрения личных убеждений основой нового технологического уклада могут стать биоинженерия и робототехника. Если, конечно, внезапно не наступит технологическая сингулярность!



Читать дальше →
Total votes 87: ↑81 and ↓6+75
Comments82

Размещение заказов у китайских поставщиков

Reading time7 min
Views118K

Основано на реальных событиях: «Mini-Desktop своими руками»


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

Как мне кажется, данная статья будет интересна разработчикам, которые хотят заказать единичные образцы продукции, так и тем кто хотел бы начать серийное производство своих товаров. Так же, на той площадке, о которой потом пойдет речь далее, можно заказывать уже готовую продукцию Азиатских поставщиков минуя посредников.
Читать дальше →
Total votes 96: ↑90 and ↓6+84
Comments66

Почему 98% текстов на ваших сайтах не работают. Вообще. И как это починить

Reading time7 min
Views284K

Вот так люди видят вашу страницу

Привет!
Проблема вот в чём. Если зайти на практически любой сайт интернет-магазина или компании с услугами, вы встретите контент. Точнее — отвратительные тексты, которые писали, кажется, маркетологи, воспитанные сеошниками.

Разумеется, можно не делать, как они. Если работать по-умному, то вы поможете и читателям по жизни, и себе в продажах.

По моим примерным подсчётам (усреднение с ряда позиций), конверсии для нас выглядят так:
  • Только название и картинка — около 1,5%.
  • С описанием от производителя — чуть более 2%.
  • С описанием человека, который держал это в руках и знает правила — около 6%.

Ниже — рассказ про то, как мы доводили время на сайте от 3 минут сначала до 6:40, а потом до 20:48. Да-да, двадцати минут сорока восьми секунд для среднего посетителя. Честного среднего, с учётом отказов и по полной выборке.
Читать дальше →
Total votes 294: ↑282 and ↓12+270
Comments121

Как сверстать веб-страницу. Часть 1

Reading time13 min
Views1.2M
Уважаемый читатель, этой статьей я открываю цикл статей, посвященных вёрстке.
В первой части будет описано, как это сделать с помощью стандартных средств на чистом HTML и CSS. В последующих частях рассмотрим как сделать тоже самое, но с помощью современных фреймворков и CMS.

Часть 1. Верстка стандартными средствами


Преимущество данной верстки состоит в том, что код получается более «чистым», а значит быстрее загружается и легче изменяется под специфические нужды. Недостаток такой верстки заключается в том, что она требует значительно больше времени, чем при использовании фреймворков.

Итак, давайте приступим. В качестве нашего подопытного мы возьмем бесплатный psd шаблон Corporate Blue от студии Pcklaboratory.
Читать дальше →
Total votes 155: ↑120 and ↓35+85
Comments110

Flask-Admin

Reading time4 min
Views59K
Доброе время суток.

Хочу представить проект, над которым работал в последнее время: Flask-Admin. Если в двух словах, это расширение для фреймворка Flask, которое позволяет быстро создавать административный интерфейс в стиле Django.
Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments22

Мини-станок из палочек от мороженого #1

Reading time2 min
Views28K
Бывает, надоедает сверлить десятки крохотных отверстий при изготовлении печатной платы… не знаю, что на меня нашло, но я решил сделать автоматический сверлильный станок. В этой статье опишу начало моего пути в этом деле.
image
Читать дальше →
Total votes 88: ↑75 and ↓13+62
Comments36

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity