Обновить
1422.08

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Логика сознания. Часть 10. Задача обобщения

Время на прочтение14 мин
Охват и читатели23K
В принципе, любая информационная система сталкивается с одними и теми же вопросами. Как собрать информацию? Как ее интерпретировать? В какой форме и как ее запомнить? Как найти закономерности в собранной информации и в какой форме их записать? Как реагировать на поступающую информацию? Каждый из вопросов важен и неразрывно связан с остальными. В этом цикле мы пытаемся описать то, как эти вопросы решаются нашим мозгом. В этой части пойдет разговор о, пожалуй, самой загадочной составляющей мышления — процедуре поиска закономерностей.

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

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

«Байкал-T1»: знакомство с платой на первом в России 28-нм процессоре

Время на прочтение3 мин
Охват и читатели58K

В нашу инженерную лабораторию попала демоплата Baikal BFK Rev 1.6 на основе первого российского процессора для коммерческих разработок — SOM Baikal-T1 MIPS.


Двухъядерный процессор «Байкал-Т1» на архитектуре MIPS Warrior P-class P5600 MIPS 32 был анонсирован еще в 2015 году в рамках программы по импортозамещению, его разработчик — российская фаблес-компания «Байкал Электроникс». Эта система на кристалле была создана для проектирования промышленных и потребительских устройств: маршрутизаторов и сетевых накопителей, тонких клиентов, мультимедийных центров, систем ЧПУ и т.п.


Откроем коробку и посмотрим, как работает стандартный пакет поддержки платформы (BSP) на тестовой плате:


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

Google ReCAPTCHA Invisible или долой дорожные знаки и витрины магазинов

Время на прочтение2 мин
Охват и читатели83K
Привет! Хоть большинству читателей Хабра не нужно объяснять, что такое CAPTCHA, зачем она придумана и для чего используется, позволю себе небольшой исторический экскурс.

Итак, раньше, чтобы зарегистрироваться на сайте или оставить комментарий, люди ломали свои глаза, разгадывая капчу:
CAPTCHA
У кого были проблемы со зрением, нередко могли её прослушать:

Как-то так
Audio CAPTCHA

Для решения задачи «в промышленных масштабах» использовали индусов или китайцев :)
Но всё изменилось в 2007 году...

11 февраля: Techleads meetup. Как создать и сохранить динамичную разработку

Время на прочтение5 мин
Охват и читатели4.6K

enter image description here


Пришло время анонсировать наш второй по счету Techleads-митап для лидов, руководителей отделов и СТО, созданный, чтобы объединить на одной площадке технологии, разработку и управление. Он пройдет 11 февраля в офисе Badoo в Москве. Начало: в 12:00.


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


Тема настолько интересная, что мы не могли остановиться, пока выбирали спикеров на митап. Вам понравится: со своими историями выступят Макс Лапшин (Erlyvideo), Евгений Потапов (ITSumma), от Badoo — Алексей Рыбак, Илья Пятин (CarPrice) и Андрей Шелехин (Tinkoff.ru). Под катом – расписание выступлений.

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

Pygest #2. Релизы, статьи, интересные проекты из мира Python [15 января 2017 — 29 января 2017]

Время на прочтение2 мин
Охват и читатели11K
image

Всем привет!

Второй выпуск дайджеста на Хабрахабр о новостях из мира Python. Присылайте свои актуальные материалы, а также любые замечания и предложения, которые будут добавлены в ближайший дайджест.

А теперь к делу!
Перейти к дайджесту

Возрождение IT-вопросника или как следить за вопросами toster и stackoverflow v2

Время на прочтение2 мин
Охват и читатели6K
Прошел год с запуска IT-вопросника, однако проработал он не долго, примерно пару месяцев. Это был один из самых активных каналов PushAll, многие пользователи получали вопросы по 100+ в день и кликали на большие из них.

Отвечая на вопросы все были в плюсе:

  1. Те кто спрашивают – сразу получали ответ
  2. Владельцы сервисов получали большую посещаемость и больше решенных вопросов
  3. Тот кто отвечал первым – получал свои ачивки в сервисах

Я долго пытался связаться с создателем IT-вопросника, получилось достучаться только в этом месяце. В итоге спустя сутки после нашего общения, снова начали приходить пуши.

Но что изменилось за этот год при использовании IT-вопросника?

Кому лень читать статью: подписываемся на канал IT-вопросника в PushAll и настраиваем теги в панели управления IT-вопросником (после подписки на канал редиректнет на панель)
Читать дальше →

Новогодние обещания Go-разработчика

Время на прочтение7 мин
Охват и читатели12K

image
Фото Roman Pronskiy


Это перевод поста одного из главных разработчиков языка Go, Расса Кокса, где он в традиционном для новогоднего времени формате дает себе обещания и планирует выполнить их.


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


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


В этой статье я опишу несколько основных задач, на которых я сосредоточусь в этом году. Это мой собственный список, а не всей команды создателей Go.

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

Хитрости и трюки Netbeans на живых примерах

Время на прочтение4 мин
Охват и читатели58K

Очень часто я слышу фразы различных людей на тему того, что полноценные IDE — это не нужно, что Vim, Sublime Text и Atom позволяют всё делать, и так далее, и так далее. Только недавно у меня снова возникла беседа на эту тему, и я снова вспомнил о том, что хотел показать людям некоторые трюки современных IDE, которые сильно упрощают жизнь во время работы.


Я люблю эту качественную опенсорсную IDE Netbeans. У меня даже цветовая схема под неё есть своя собственная (не забудьте прочитать описание, если пожелаете её опробовать). На всех видеороликах как раз она и используется в работе, плюс тёмный интерфейс Darkula и свободный шрифт Hack.


Иногда я перехожу в PhpStorm, поработать там и сравнить возможности этих двух IDE. И время от времени прихожу к понимаю, что каждая из них по-своему хороша. PhpStorm имеет множество интересных интеллектуальных возможностей для быстрой разработки ООП кода. А на стороне Netbeans — бесплатность, а также мощный и не сильно перегруженный интерфейс. Это особенно чувствуется после возвращения на него с PhpStorm.


В этой статье я хотел бы показать некоторые прикольные трюки, которые присутствуют в Netbeans и прочих современных IDE, а некоторые из них — только в Netbeans. Очень часто они помогают мне сэкономить массу времени при работе над большими проектами.


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

Улучшения Chrome и Firefox ускорили перезагрузку страниц на 28-50%

Время на прочтение4 мин
Охват и читатели16K

Традиционная модель валидации ресурсов

Разработчики из Google вчера объявили о результатах совместного с Facebook и Mozilla проекта оптимизации браузера по образцу Firefox. После оптимизации значительно ускорилась повторная загрузка страниц в мобильной и десктопной версиях Chrome. По данным Google, в последней версии Chrome перезагрузка страниц ускоряется в среднем на 28%.

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

Пришло время улучшить браузеры и сайты.
Читать дальше →

33 способа ускорить ваш фронтенд в 2017 году

Время на прочтение20 мин
Охват и читатели86K

enter image description here


Вы уже используете прогрессивную загрузку? А как насчёт технологий Tree Shaking и разбиения кода в React и Angular? Вы настроили сжатие Brotli или Zopfli, OCSP stapling и HPACK-сжатие? А как у вас обстоят дела с оптимизацией ресурсов и клиентской части, со вложенностью CSS? Не говоря уже о IPv6, HTTP/2 и сервис-воркерах.

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

На 100% правильный способ проверки адресов электронной почты

Время на прочтение5 мин
Охват и читатели153K
Поздравляю. C сегодняшнего дня вы никогда не будете тратить время, подбирая самое оптимальное регулярное выражение для проверки адреса электронной почты. И вы никогда больше не отклоните адрес, который к вашему удивлению оказался действительным.

Хитрость в том, чтобы сразу определить значение слова «действительный».

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


en.wikipedia.org/wiki/Email_address#Valid_email_addresses

Но я отправлю к чёрту логичный способ, так что...

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

Время на прочтение6 мин
Охват и читатели18K
image

Почему разработчики не могут написать безопасный код? Мы не говорим здесь очередной раз про «чистый код». Мы говорим о большем с чисто практической точки зрения — о надёжности и безопасности программного обеспечения. Да, потому что небезопасное программное обеспечение в значительной степени бесполезно. Посмотрим, что значит «небезопасное» программное обеспечение:

  • Полёт №501 ракеты «Ариан-5» Европейского космического агентства был прекращён через 40 секунд после старта (4 июня 1996 г.). Экспериментальная ракета-прототип стоимостью 1 млрд. долларов США самоликвидировалась из-за ошибки в бортовом ПО управления.
  • Ошибка в программе, управлявшей установкой лучевой терапии Therac-25, стала прямой причиной смерти, как минимум, пяти пациентов в 80-х годах, когда она задавала чрезмерные дозы рентгеновского облучения.
  • Программная ошибка в зенитном ракетном комплексе MIM-104 «Patriot», вызывавшая уход его системных часов на одну треть секунды за сто часов, привела к его неспособности обнаружить и перехватить летящую ракету. Иракская ракета попала в воинскую часть в г. Дахран, Саудовская Аравия (25 февраля 1991 г.), погибло 28 американцев.

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

Многопоточность (concurrency) в Swift 3. GCD и Dispatch Queues

Время на прочтение28 мин
Охват и читатели359K
Надо сказать, что многопоточность (сoncurrency) в iOS всегда входит в вопросы, задаваемые на интервью разработчикам iOS приложений, а также в число топ ошибок, которые делают программисты при разработке iOS приложений. Поэтому так важно владеть этим инструментом в совершенстве.
Итак, у вас есть приложение, оно работает на main thread (главном потоке), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (UI). Как только вы начинаете добавлять к вашему приложению такие «затратные по времени» куски кода, как загрузка данных из сети или обработка изображений на main thread (главном потоке), то работа вашего UI начинает сильно замедляться и даже может привести к полному его «замораживанию».



Как можно изменить архитектуру приложения, чтобы таких проблем не возникало? В этом случае на помощь приходит многопоточность (сoncurrency), которая позволяет одновременно выполнять две или более независимые задачи (tasks): вычисления, загрузку данных из сети или с диска, обработку изображений и т.д.
Читать дальше →

Ближайшие события

Intel QuickAssist: давай зашифруем это по-быстрому

Время на прочтение2 мин
Охват и читатели12K
В нашем беспокойном мире забота о собственной информационной безопасности уже давно перестала рассматриваться как разновидность паранойи, и с этим приходится считаться разработчикам приложений — при прочих равных пользователь выберет то, которое лучше защищает его данные. Чтобы упростить программистам жизнь, Intel в рамках своей open source программы разработала технологию ускорения шифрования и сжатия QuickAssist (QAT). Давайте познакомимся с ней поближе.


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

Открытые онлайн-курсы от Университета ИТМО

Время на прочтение7 мин
Охват и читатели36K
Не так давно в нашей подборке полезных материалов речь шла о поступлении в вуз. Однако пройти обучение у преподавателей Университета ИТМО можно и без поступления — достаточно записаться на открытый онлайн-курс Университета и попробовать свои силы в программировании, фотонике, реологии, оптике и других направлениях, которые развивает Университет ИТМО. Возможно, такой курс поможет кому-то определиться с направлением обучения и будущих исследований или лучше подготовиться к вступительным испытаниям (что особенно актуально, например, для поступающих в магистратуру).

Почему понадобилось разработать «русский дропбокс»

Время на прочтение5 мин
Охват и читатели28K


В какой-то момент российские организации остро ощутили, что отправлять файлы через иностранные сервера — не самая хорошая идея. Дальше три варианта: либо решать административно и «бить ногами» тех, кто отправляет не на флешке фельдъегерской почтой, либо делать глобальное хранилище данных (например, на базе ECM Documentum, OpenText или Alfresco), либо же сразу разворачивать облачный аналог Дропбокса у себя на серверах в РФ.

Первые два пути работают, но самый простой и эффективный — третий. Поэтому нам пришлось сделать свой сервис обмена файлами для крупного бизнеса. Из приятных примочек — аутентификация через LDAP, шифрование, саморазрушающиеся ссылки и прочие прелести паранойи. Самое смешное — получилось вполне сопоставимо по конечным ценам с бизнес-лицензией на Дропбокс. Да, мы делаем дешевле Dropbox Business для средних и больших компаний.
Читать дальше →

Разработка на R: тайны циклов

Время на прочтение8 мин
Охват и читатели22K

Меньше недели назад в журнале Хакер вышла авторская версия материала, посвященного фичам при использовании циклов при разработке на R. По согласованию с Хакером, мы делимся полной версией первой статьи. Вы узнаете о том, как правильно писать циклы при обработке больших объемов данных.


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

Маппинг в C# на примере сериализатора для AMF

Время на прочтение26 мин
Охват и читатели21K
Приветствую, друзья. Сегодня речь пойдёт о реализации маппинга на C#, а так же о применении сей реализации в решении реальных задач на примере отправки данных AMF на сервер. Всё нижеизложенное не претендует на какие-либо эталоны реализации алгоритмов и паттернов проектирования кода, это лишь описание одного из множества, далеко не всегда очевидных для новичков, решений.

В процессе изучения статьи, Вы узнаете как реализовать собственные атрибуты и как их применять, познакомитесь с методами расширений типов и применением рефлексии на практике, узнаете об основах MSIL в целом и OpCodes в частности, а так же о том, как можно сериализовать объекты в AMF с помощью потоков.
Читать дальше →

Введение в Akka.NET

Время на прочтение6 мин
Охват и читатели45K

Что такое Akka?


Масштабируемая, распределенная обработка транзакций в реальном времени


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

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

Chrome 57 будет активно подавлять работу фоновых вкладок

Время на прочтение4 мин
Охват и читатели25K


Ближайшие изменения в браузере Chrome вряд ли порадуют разработчиков Slack, Discord и других программ, которые работают во вкладках браузера. В бета-версии Chrome 56 реализован новый механизм оптимизации таймеров для фоновых вкладок.

На первый взгляд, инициатива разработчиков выглядит хорошим делом. В сентябрьском плане внедрения (Intent to Implement) объясняются причины, которые сподвигли разработчиков на такое решение.

Главная причина — некоторые плохо спроектированные приложения (например, скрипты аналитики и javascript-реклама) потребляют много ресурсов CPU, хотя находятся в фоновом режиме. Это негативно отражается на производительности браузера и потребляет энергию аккумулятора на мобильных устройствах. Такая обработка активности в фоновых вкладках совершенно ни к чему. Идея состоит в том, чтобы установить максимальный лимит вычислительных ресурсов, которые можно дать фоновому приложению.
Читать дальше →

Вклад авторов