Pull to refresh
19
0.5
Send message

Логика мышления. Часть 4. Фоновая активность

Reading time8 min
Views86K


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

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

Логика мышления. Часть 6. Система проекций

Reading time9 min
Views63K


Для тех, кто только присоединился, я советую начать с первой части или хотя бы с описания используемой нами волновой модели коры. Суть волновой модели в том, что информация кодируется одновременно двумя способами. Первый способ – это паттерны вызванной активности, соответствующие обнаруженным нейронами-детекторами явлениям. Второй – волны идентификаторы, распространяющиеся от паттернов вызванной активности и несущие уникальные узоры. Уникальность узора каждой из волн позволяет на удалении от источника сигнала узнать о его активности. При таком подходе хорошо объясняется сформулированное Мак-Каллоком и Питсом несоответствие между объемом зон коры и количеством волокон в пучках, проецирующих информацию от них на другие зоны.
Читать дальше →

Эффект Даннинга-Крюгера

Reading time3 min
Views133K
Открыв сегодня Хабр с утра, я обнаружил там статью в хабе Human Resources, «У Вас много денег? Тогда мы идем к Вам!»
Мне по работе не раз приходилось встречаться с ситуацией, описанной там, да, уверен, большинству читающих ситуация хорошо знакома.
Однако буквально на днях, бродя по Википедии, я нашел ответ на вопрос «Что же за phukinglyphuk приосходит с этим миром?», мучавшим меня на протяжении многих лет. Своей находкой я хочу поделиться здесь:

Эффект Даннинга — Крюгера — когнитивное искажение, которое заключается в том, что люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации (выделение мое, track). Это приводит к возникновению у них завышенных представлений о собственных способностях, в то время как действительно высококвалифицированные люди, наоборот, склонны занижать свои способности и страдать недостаточной уверенностью в своих силах, считая других более компетентными. Таким образом, менее компетентные люди в целом имеют более высокое мнение о собственных способностях, чем это свойственно людям компетентным, которые к тому же склонны предполагать, что окружающие оценивают их способности так же низко, как и они сами. (выделение снова мое, track)
Читать дальше →

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

Reading time3 min
Views103K


Баги в некоторых программах остаются незамеченными годами. Другие тихо исправляются. Но встречаются баги, которые становятся объектом всеобщего внимания и даже судебного разбирательства. Именно такая история произошла с ошибкой в игровом автомате Game King Multi-Game. Обнаруживший её игрок не сообщил разработчикам о найденной уязвимости, а начал снимать джекпоты в разных казино. Расследование ФБР показало, что он снял из игровых автоматов более $500 тыс.
Читать дальше →

Охота на Java-разработчиков: как профессионально расти и стать желанной целью

Reading time7 min
Views84K
image
Двое на этой фотографии через месяц сменили работу на более крутую

Студент, который только учит Java, может получить в Москве больше, чем действующий разработчик. К примеру, в Российском центре разработки Deutsche Bank стипендия колеблется в районе 100 тыс.руб. в месяц — и вас за эти деньги ещё только учат, работа — потом.

Спрос на разработчиков каждый год растёт примерно на 10-15 процентов, а база для образования не справляется. И потребности растут, и текучка большая: ведь в какой-то момент выяснилось, что Java позволяет наиболее индустриально разрабатывать код.

Так вот, сейчас я расскажу, какие есть варианты карьеры в России и за рубежом есть у вас, если вы уже знаете Java или, по крайней мере, у вас есть пара месяцев, чтобы перейти на новый язык и новую среду разработки. За рубежом, кстати, Amazon, Facebook, Twitter и LinkedIn активно нанимают Java-инженеров, специализирующихся на бэкэндах. А у нас — Одноклассники, Deutsche Bank, Oracle, Luxoft, Сбербанк-Технологии, Azul и другие. Пошли, покажу, что и как.
Читать дальше →

Организация backup-сервера. Linux, ZFS и rsync

Reading time5 min
Views66K
TL;DR:
Статья о настройке бекапа линуксовых серверов. В качестве хранилища используется раздел ZFS с включенными дедубликацией и компрессией. Ежедневно делаются снапшоты, которые сохраняются в течение недели (7 штук). Ежемесячные снапшоты хранятся в течение года (еще 12 штук). В качестве транспорта выступает rsync: на сервере он запущен демоном, на клиентах он запускается из crontab.
Читать дальше →

Что будет если смешать орехи, Arduino, OpenCV и Delphi. Часть 1

Reading time4 min
Views19K
Привет, хабровчанин.

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

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

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

— К тебе пришли.

Я вышел из склепа и познакомился с парнем немного старше меня по имени Андрей. На ладони у него были половинки ядер грецкого ореха, одно темно-коричневое, почти черное, другое — светлое, практически бежевое. Андрей предложил работу, нужно было программно отделять первые от вторых. Это была первая ошибка. Нет, не подумайте плохо, ошибка не в том, что он связался со мной, а в том что принес мне настолько разные примеры. Мне была дана полная свобода в плане платформ и реализаций. Хоть и было предложено использовать камеры, я их отбросил, ввиду, как мне тогда показалось, сложности реализации и ресурсоемкости такого подхода. В качестве сенсора был выбран датчик tcs3200 — преобразователь цвет->частота, такие часто используют в DIY проектах по сортировке чего-нибудь цветного. По даташиту датчик имел хорошие характеристики: имел по 16 фотодиодов каждого цвета(R/G/B) плюс отдельно 16 фотодиодов для белого цвета. Глубина чувствительности каждого канала была заметно выше 8 бит на канал, которые предлагает бытовая вебкамера. Первая версия устройства представляла собой картонную трубу от пищевой фольги с вырезанным окошком для датчика и подсветки. Данные с максимально-возможной скоростью передавались в виндовое приложение. Получалось около 600 замеров в секунду.
Читать дальше →

Использование ownCloud 7 в полевых условиях

Reading time15 min
Views165K
owncloud image Прочитав статью "Делаем backup Google или паранойя по поводу санкций. Owncloud и другие открытые решения", я решил, что пора дать второй шанс ownCloud'у после крайне неудачного опыта с 5 версией. В итоге оказалось, что за сей короткий промежуток времени ownCloud приобрел вполне добротный вид и способна работать в качестве повседневного инструмента — обнаруженные проблемы либо не существенны, либо имеют решение. Те, кто не знаком с ownCloud, могут узнать о его ключевых особенностях, к примеру, на официальном сайте или на opennet.ru. В этой статье я НЕ расскажу о том, как надо устанавливать ownCloud и как потом его с нуля настроить, потому что уже достаточно об этом писано-расписано-переписано, да и установка не представляет собой ничего сложного, я лишь кратко упомяну важные детали. Под катом будет информация о том, что же интересного умеет ownCloud, какие приложения в apps.owncloud.com мне показались стоящими внимания, затрону интеграцию с KDE и Android, а также скажу пару слов о подводных камнях и интересных местах, ну а в конце подведу итоги для тех, кому лень столько читать. ownCloud на своём сервере я использую в одиночестве, поэтому администрирование пользователями и всё сопутствующее будет описано крайне скудно. Осторожно: много картинок.
Читать дальше →

Матричные фильтры обработки изображений

Reading time3 min
Views221K
Данная статья рассказывает не только о наиболее распространённых фильтрах обработки изображений, но в понятной форме описывает алгоритмы их работы. Статья ориентирована, прежде всего, на программистов, занимающихся обработкой изображений.

Читать дальше →

Поиск простого на сложном: tips & tricks

Reading time5 min
Views20K
Достался мне тут довольно интересный проектик: на рентгенограммах сварных швов находить проволочные образцы стандартных размеров. Казалось бы, сколько уже было написано по поводу поиска паттернов на изображении, выработаны стандартные подходы и методики, но когда речь заходит о реальных задачах академические методы оказываются не настолько эффективны, как от них ожидается. Для затравочки, попробуйте найти здесь все семь проволочек:

image

Читать дальше →

Умная поливалка цветка на микроконтроллере Attiny13A

Reading time7 min
Views88K
image

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

Предлагаю вашему вниманию устройство для автоматического полива цветов на базе микроконтроллера Attiny13a, подробности под катом.
Читать дальше →

Принципы работы одного Python-разработчика

Reading time13 min
Views17K
В этой публикации я хотел бы представить на суд уважаемого читателя некоторые принципы, которыми я руководствуюсь, исполняя свои обязанности в роли Python-разработчика.

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

Принципы условно сгруппированы в три группы: принципы принятия решений; принципы, направленные на повышение качества кода; принципы, направленные на повышение производительности кода.

  • Принятие решений
    • Любое техническое решение должно быть обосновано
    • Ответственность за принятое решение всегда лежит на том или тех, кто принял данное решение
    • При принятии технических решений необходимо учитывать их действие во времени и их соответствие потребностям бизнеса
    • Одним из основных критериев при принятии технических и иных решений должна быть их наибольшая эффективность
    • Смело отступать от правил, методологий, шаблонов и прочих ограничений, если эффект от такого отступления превышает возможные потери (Special cases aren't special enough to break the rules, although practicality beats purity)
    • При необходимости сделать работающее, но, возможно, не наилучшее, решение сразу, а позднее улучшить его (Now is better than never, although never is often better than *right* now)
    • Если сложно выбрать между двумя альтернативными техническими решениями, то нужно выбрать любое и двигаться с ним дальше, когда появится больше инфорации, то можно будет сделать рефакторинг, если решение оказалось неоптимальным
    • Гибкость технических решений крайне желательна, а универсальность не обязательна
  • Качество исходного кода
    • Качество кода следует оптимизировать на базе сформированной системы критериев, сбалансированной по отношению к затратам в краткосрочном и долгосрочном периодах
    • Писать оптимальный код сразу, если это не увеличивает его сложность и сроки разработки (Beautiful is better than ugly)
    • Самодокументируемый код имеет приоритет над хорошо прокомментированным (Beautiful is better than ugly)
    • Писать TODO и FIXME в коде
    • Давать переменным, функциям, методам, классам и другим объектам исходного кода имена точно отражающие их назначение, несмотря на увеличение длины названий (Explicit is better than implicit)
    • Меньшее число строк и объем кода предпочтительнее, при сохранении прежней читабельности кода (Simple is better than complex)
    • Применять инспекцию кода (code review) как инструмент обнаружения ошибок, выравнивания стиля разработки, знакомства с чужим кодом и обучения в команде
    • Применять повторное использование своего и чужого кода
    • Использовать специализированные библиотеки для решения конкретных задач, вместо разработки своего аналогичного кода
  • Производительность
    • Производительность разработки кода имеет приоритет над производительностью исполнения кода
    • Оптимизация производительности исполнения кода должна быть обоснована соответствующей потребностью
    • Оптимизация производительности исполнения кода должна выполняться за счет устранения наиболее серьезных узких мест
    • В первую очередь должны быть использованы наиболее эффективные методы оптимизации производительности исполнения кода

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

Tortilla — весь TCP и DNS трафик из виртуальной машины через TOR

Reading time2 min
Views72K

Пошаговое руководство по направлению всего TCP и DNS трафика из виртуальной машины через TOR.

Тема уже поднималась в 2012 году: «Как направить весь tcp-трафик с гостевой Windows системы через Tor» с использованием tun2socks и виртуального сетевого адаптера TUN/TAP от OpenVPN.

Однако на Black Hat USA 2013 был представлен доклад «TOR… ALL-THE-THINGS!», в котором анонсировали новый инструмент от Jason Geffner из CROWDSTRIKE INC под названием Tortilla. Также Tortilla упоминается в официальном Tor FAQ в разделе What should I do if I can't set a proxy with my application?. Это виртуальный сетевой адаптер, который просто установить и использовать.
Читать дальше →

Управление списком баз 1С 8.2 с помощью Active Directory

Reading time9 min
Views53K
Приветствую тебя, уважаемый читатель!
По традиции, прошу слишком сильно не пинать, т.к. это мой первый пост.

Итак, приблизительно с полгода назад, встала задача автоматизировать управление списком баз 1С (коих развелось уже более 20 штук) у пользователей домена.
Делалось это не только удобства ради, но и в рамках проекта по внедрению «ролевой модели доступа». Вкратце, смысл этой модели в том, что каждый пользователь в домене является членом определенной группы (именуемой согласно должности), которая имеет заранее определенный набор привилегий, в том числе и список информационных баз.

Т.к. у нас имеется домен Active Directory, логично использовать групповые политики для выполнения нашей задачи.
Гугление выдавало достаточно много реализаций (и даже платных), но все они, чаще всего, сводились к заранее сформированным файлам со списками баз (ibases.v8i). Нам же хотелось:
a) Централизованно управлять настройками подключения к информационным базам (у нас клиент-серверный вариант с SQL базами).
б) Централизованно управлять списком, доступных пользователю, информационных баз, согласно его «роли».

В итоге я расскажу о решении которое работает уже больше полугода в нашей компании.
Кому интересна данная тема, прошу под кат.

Как улучшить свой стиль программирования?

Reading time6 min
Views139K

Исповедь 1


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

Весь мой опыт программирования складывается из университетских работ и пары лет пребывания в различных компаниях. Критикующие меня люди неоднократно говорили мне, что в целом я разбираюсь в теме, так что я далеко не клинический случай, как можно было подумать. Однако, очевидно, я выработал совсем не те программистские привычки (как минимум, на взгляд работодателя) и мне нужно срочно изменить их. Везде, где бы я ни работал, мои решения, использующие иерархии мелких классов с делегированием поведения, признавались плохими. Говорят, будто так и надо писать, но это не так. Потому что всё это «как надо» может стоить мне работы.
Читать дальше →

Как обсуждать деньги с руководством или почему иногда останавливаются карьеры?

Reading time11 min
Views215K
Как и обещали в нашем недавнем опросе про проблемы в переговорах, мы решили опубликовать несколько материалов по алгоритмам переговоров в разных рабочих ситуациях. И сегодня первый материал из этого цикла.

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

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

В частности о том, как обсуждать собственную зарплату с руководством – на эту тему сегодня и поговорим, потому что из того, что приходится наблюдать на тренингах – 90% людей совершают одни и те же ошибки, получая минусы в карму и тормозя собственную карьеру (правильный ответ на вопрос, как это делать – в конце статьи).
Читать дальше →

Что нам стоит сеть построить

Reading time8 min
Views60K
Когда пользуешься сложными алгоритмами для решения задач компьютерного зрения — нужно знать основы. Незнание основ приводит к глупейшим ошибкам, к тому, что система выдаёт неверифицируемый результат. Используешь OpenCV, а потом гадаешь: «может, если сделать всё специально под мою задачу ручками было бы сильно лучше?». Зачастую заказчик ставит условие «сторонних библиотек использовать нельзя», или, когда работа идёт для какого-нибудь микроконтроллера, — всё нужно прогать с нуля. Вот тут и приходит облом: в обозримые сроки реально что-то сделать, только зная как работают основы. При этом чтения статей зачастую не хватает. Прочитать статью про распознавание номеров и попробовать самому такое сделать — огромная пропасть. Поэтому лично я стараюсь периодически писать какие-нибудь простенькие программки, включающие в себя максимум новых и неизвестных для меня алгоритмов + тренирующих старые воспоминания. Рассказ — про один из таких примеров, который я написал за пару вечеров. Как мне показалось, вполне симпатичный набор алгоритмов и методов, позволяющий достичь простенького оценочного результата, которого я ни разу не видел.



Сидя вечером и страдая от того, что нужно сделать что-то полезное, но не хочется, я наткнулся на очередную статью по нейросетям и загорелся. Нужно сделать наконец-таки свою нейросеть. Идея банальная: все любят нейросети, примеров с открытым кодом масса. Мне иногда приходилось пользоваться и LeNet и сетями из OpenCV. Но меня всегда настораживало, что их характеристики и механику я знаю только по бумажкам. А между знанием «нейросети обучаются методом обратного распространения» и пониманием того, как это сделать пролегает огромная пропасть. И тогда я решился. Пришло время, чтобы 1-2 вечера посидеть и сделать всё своими руками, разобраться и понять.
Читать дальше →

libscgi — эффективное решение для простых и быстрых скриптов

Reading time4 min
Views5K
Очень часто необходимо реализовать простое легкое решение, которое должно отработать довольно быстро. А с использованием технологии AJAX это стало еще актуальнее. Это может быть как скрипт автокомплита, скрипт специфического поиска, вывод информации из справочника. Ранее использовались cgi скрипты. При больших нагрузках они оказались не очень эффективными и были разработаны протоколы fcgi и scgi. Следует заметить что производительность scgi сервера довольно-таки высокоя (более 1500 запр/сек) и памяти занимает всего 600K.

Протокол Simple Common Gateway Interface (SCGI) — это протокол по взаимодействию приложений с веб (http) серверами. Большинство современных WEB-серверов (Apache/nginx/lighttpd) имеют встроенную поддержку scgi. Ниже дано краткое описание использование простой библиотечки, которая представляет собой scgi сервер.

Исходники тут.
Читать дальше →

Information

Rating
3,453-rd
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity