Pull to refresh
26
0
olegi @olegi

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

Send message

Кто ищет, тот всегда найдет. Если ему помочь

Reading time7 min
Views13K


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

Как я сделал самый быстрый ресайз изображений. Часть 0

Reading time7 min
Views35K

Здравствуйте, меня зовут Саша, я написал самый быстрый ресайз изображений для современных х86 процессоров. Я так утверждаю, поскольку все остальные библиотеки, которые я сумел найти и протестировать, оказались медленнее. Я занялся этой задачей, когда работал над оптимизацией ресайза картинок на лету в Uploadcare. Мы решили открыть код и в результате появился проект Pillow-SIMD. Любой желающий с легкостью может использовать его в приложении на языке Python.


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

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

Остроумие и отвага: как мы много раз ошибались, создавая iFunny

Reading time10 min
Views22K

Это — не статья, это — фейлбук. То, что вы прочтете под катом, — выжимка наших нелепых техно-промахов за все 5 лет работы над флагманским продуктом — iFunny. Возможно, наша фейловая история поможет вам избежать ошибок, а возможно, вызовет смех. Что тоже хорошо. Смешить людей — призвание FunCorp уже 13 лет.


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

Анализ и перевод языка пришельцев с помощью Wolfram Language

Reading time2 min
Views37K


А что если пришельцы действительно захотят посетить Землю? Будут ли мировые лидеры способствовать изучению их языка? Когда Дени Вильнёв начал работать над научно-фантастическим фильмом “Прибытие”, ему и его команде пришлось обратиться к настоящим ученым Стивену и Кристоферу Вольфрамам, дабы представить подлинную науку на большом экране. Кристоферу была поставлена задача анализа и написания кода для вымышленного нелинейного, визуального языка.
Читать дальше →

Атрибуты свойств в Objective-C. Инструкция для начинающих

Reading time9 min
Views83K
image

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

Паттерны проектирования, взгляд iOS разработчика. Часть 0. Синглтон-Одиночка

Reading time6 min
Views36K
Я почув і забув.
Я записав і запам'ятав.
Я зробив і зрозумів.
Я навчив іншого, тепер я майстер.
(В. В. Бублик)


Небольшое вступление.


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


И именно эти слова и сподвигли меня на написание данной серии постов. Дело в том, что я — начинающий iOS разработчик, и я очень хочу разобраться в паттернах проектирования. И я не придумал лучшего способа, чем взять книгу "Паттерны проектирования" Эрика и Элизабет Фримен, и написать примеры каждого паттерна на Objective-C и Swift. Таким образом я смогу лучше понять суть каждого паттерна, а также особенности обоих языков.


Содержание:


Часть 0. Синглтон-Одиночка
Часть 1. Стратегия
Часть 2. Наблюдатель


Итак, начнем с самого простого на мой взгляд паттерна.


Одиночка, он же - синглтон

Повесть о невозможном баге: big.LITTLE и кэширование

Reading time3 min
Views12K
Когда кто-то произносит слово многоядерный, то мы бессознательно подразумеваем SMP. Это успешно срабатывало для нас до недавнего времени, пока ARM не объявила о big.LITTLE. Архитектура ARM big.LITTLE является первым массово производимым примером архитектуры AMP, и как мы увидим далее, она поднимает планку сложности многоядерного программирования еще выше.
Читать дальше →

Теорема Гёделя о неполноте за 20 минут

Reading time8 min
Views214K


Теореме Гёделя о неполноте, одной из самых известных теорем математической логики, повезло и не повезло одновременно. В этом она похожа на специальную теорию относительности Эйнштейна. С одной стороны, почти все о них что-то слышали. С другой — в народной интерпретации теория Эйнштейна, как известно, «говорит, что всё в мире относительно». А теорема Гёделя о неполноте (далее просто ТГН), в примерно столь же вольной фолк-формулировке, «доказывает, что есть вещи, непостижимые для человеческого разума». И вот одни пытаются приспособить её в качестве аргумента против материализма, а другие, напротив, доказывают с её помощью, что бога нет. Забавно не только то, что обе стороны не могут оказаться правыми одновременно, но и то, что ни те, ни другие не удосуживаются разобраться, что же, собственно, эта теорема утверждает.

Итак, что же? Ниже я попытаюсь «на пальцах» рассказать об этом. Изложение моё будет, разумеется нестрогим и интуитивным, но я попрошу математиков не судить меня строго. Возможно, что для нематематиков (к которым, вообще-то, отношусь и я), в рассказанном ниже будет что-то новое и полезное.

Математическая логика — наука действительно довольно сложная, а главное — не очень привычная. Она требует аккуратных и строгих манёвров, при которых важно не перепутать реально доказанное с тем, что «и так понятно». Тем не менее, я надеюсь, что для понимания следующего ниже «наброска доказательства ТГН» читателю понадобится только знание школьной математики/информатики, навыки логического мышления и 15-20 минут времени.

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

В Швеции отменяют шестичасовой рабочий день: не все так радужно, как казалось

Reading time6 min
Views84K

Гётеборг

В октябре 2015 года на Geektimes, да и в других СМИ стала появляться информация о том, что все больше шведских компаний вводят для своих сотрудников шестичасовой рабочий день. При этом утверждалось, что руководство компаний, да и сами сотрудники не наблюдают снижения эффективности работы. В некоторых случаях (правда, в каких именно, не уточнялось) эффективность даже увеличивалась. Другими словами, речь шла о том, что сотрудники компаний, где был введен 6-часовой рабочий день, успевают делать столько же, сколько сотрудники других компаний за полноценный 8-часовой день.

«Мне кажется, что 8-часовой рабочий день не такой эффективный, как думают многие,- заявлял Лайнус Фелдт, генеральный директор компании, разрабатывающей мобильные приложения, Filimundus. – Фокусироваться на работе в течение восьми часов чрезвычайно тяжело. Приходится перемежать работу чем-то для разнообразия. Становится трудно разбираться с личной жизнью, проводить время с семьёй». Но, похоже, все оказалось не так радужно, поскольку сейчас все те же шведские компании понемногу отменяют шестичасовой режим, вводя заново обычный и привычный многим восьмичасовой рабочий день.
Читать дальше →

Как не распространять запрещённый контент, но всё равно ощутить на себе действие 139-ФЗ

Reading time4 min
Views45K
В этой истории будет рассказано о том, как ваш интернет-ресурс, особенно если вы беспокоитесь о безопасности и используете на сайте SSL, может внезапно стать недоступен для посетителей из России, якобы по воле Роскомнадзора. Вы можете сколь угодно долго пытаться найти причину у себя, но окажется, что от вас ничего не зависит и либо вам повезёт и всё разрешится само, либо предстоит долгая и упорная борьба за чистоту своего IP-адреса. Ну ещё можно от SSL отказаться, что вряд ли хорошая идея.

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

Методы оптимизации нейронных сетей

Reading time17 min
Views228K

В подавляющем большинстве источников информации о нейронных сетях под «а теперь давайте обучим нашу сеть» понимается «скормим целевую функцию оптимизатору» лишь с минимальной настройкой скорости обучения. Иногда говорится, что обновлять веса сети можно не только стохастическим градиентным спуском, но безо всякого объяснения, чем же примечательны другие алгоритмы и что означают загадочные \inline \beta и \inline \gamma в их параметрах. Даже преподаватели на курсах машинного обучения зачастую не заостряют на этом внимание. Я бы хотел исправить недостаток информации в рунете о различных оптимизаторах, которые могут встретиться вам в современных пакетах машинного обучения. Надеюсь, моя статья будет полезна людям, которые хотят углубить своё понимание машинного обучения или даже изобрести что-то своё.


image


Под катом много картинок, в том числе анимированных gif.

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

Let's Encrypt и nginx: настройка в Debian и Ubuntu

Reading time13 min
Views341K

image


Если вдруг вся эта история прошла мимо вас, Let's Encrypt — центр сертификации от некоммерческой организации ISRG, существующий при поддержке EFF и многих компаний, взявшей на себя миссию дать людям бесплатные SSL/TLS сертификаты для сайтов и серверов. Сертификаты от Let's Encrypt уже используются на более чем 10 миллионах доменов.


Кроме очевидной бесплатности у сертификатов от Let's Encrypt есть особое, отсутствующее у любых других коммерческих сертификационных центров, достоинство: если вы однажды получили сертификат от Let's Encrypt, то, при прочих равных, это навсегда. Не нужно раз в год-два вручную обновлять сертификаты. Не нужно вообще вспоминать что сертификаты где-то есть. Получил, настроил и забыл!


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


Организации автоматического обновления сертификатов в статье уделено пристальное внимание, с тем чтобы вы могли в полной мере оценить это принципиальное преимущество Let's Encrypt.

Читать дальше →
Через банк проходят сотни миллионов транзакций ежедневно, поэтому на серверах накапливаются большие данные: сведения о самих клиентах, паттерны их покупок, требования в целом. По сути, банки превращаются в IT-компании так, как это произошло с телеком-операторами. Они предоставляют все больше цифровых сервисов и услуг, а собираемые ими данные и извлекаемая из них информация активно используются в создании новых сервисов. Применить эту информацию можно в множестве приложений, от классических задач оптимизации обработки транзакций и кибербезопасности с выявлением мошенничества, вплоть до создания персональных финансовых ассистентов и сверх-таргетированного маркетинга.
Читать дальше

История одного бага: выравнивание данных на x86

Reading time14 min
Views17K
Однажды мне пришлось вычислять сумму векторов целых чисел.

Звучит необычно. Кому понадобится делать это в реальной жизни? Обычно такие вычисления встречаются только в задачках из начальной школы или бенчмарках компилятора. Но сейчас это случилось на самом деле.

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

  • её можно эффективно выполнить с помощью процессорной инструкции ADC (к сожалению, эта функция недоступна в C);
  • её можно выполнить на словах любого размера (можете добавить по желанию восьмибайтные значения, только результат следует уменьшить до двух байт и добавить все биты переполнения);
  • она нечувствительна к порядку следования байтов (удивительно, но это так).
Читать дальше →

Система отслеживания степени заледенелости улиц: машинное обучение + Microsoft Azure + Android

Reading time10 min
Views6.8K

Привет всем! Каждую зиму в русских (да и не только) городах появляется зловредный гололед. Множество людей подскальзывается и травмирует различные части тела. Скажете, эта проблема должна решаться коммунальщиками — да, так и есть, но они часто не доглядывают за состоянием тротуаров и дворовых тропинок, а может быть и просто не знают, куда смотреть. Чтобы хоть как-то улучшить ситуацию, в решение проблемы все больше должны включаться современные технологии. Возможное улучшение — это приложение, в котором люди могут определить для себя наиболее безопасный маршрут из точки A в точку B, глядя на карту заледенелости. Итак, сегодня поговорим о создании системы оценки степени заледенелости улиц, основанной на статистике падений людей. Под катом машинное обучение, облака и мобильные приложения.


3 примера использования системы
Читать дальше →

Занимательные задачки и отрывок из книги «Карьера программиста»

Reading time16 min
Views17K
image Привет, Хаброжители! Ранее мы уже анонсировали книгу «Карьера программиста. 6-е издание" Гейлы Лакман Макдауэллы в этом посте. Теперь мы получили электронные права на эту книгу, а значит можем поделиться главой «Java» и предложить решить задачки:

1. Разработайте алгоритм для поиска наименьших К чисел в массиве.
2. Напишите функцию суммирования двух чисел без использования "+" или любых других арифметических операторов.
3. Для двух квадратов на плоскости найдите линию, которая делит эти два квадрата пополам. Предполагается, что верхняя и нижняя стороны квадрата проходят параллельно оси x.

Тем, кто предложит аргументированные решения — мы, с удовольствием, отправим электронную книгу в качестве подарка.
Читать дальше →

MMU в картинках (часть 1)

Reading time11 min
Views80K
Хочу поговорить об устройстве управления памятью (Memory Management Unit, MMU). Как вы, разумеется, знаете, основной функцией MMU является аппаратная поддержка виртуальной памяти. Словарь по кибернетике под редакцией академика Глушкова говорит нам, что виртуальная память — это воображаемая память, выделяемая операционной системой для размещения пользовательской программы, ее рабочих полей и информационных массивов.

У систем с виртуальной памятью четыре основных свойства:
  1. Пользовательские процессы изолированы друг от друга и, умирая, не тянут за собой всю систему
  2. Пользовательские процессы изолированы от физической памяти, то есть знать не знают, сколько у вас на самом деле оперативки и по каким адресам она находится.
  3. Операционная система гораздо сложнее, чем в системах без виртуальной памяти
  4. Никогда нельзя знать заранее, сколько времени займет выполнение следующей команды процессора

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

К сожалению, по какой-то причине все вышеперечисленные товарищи недостаточно почтительно относятся к MMU, а их знакомство с виртуальной памятью обычно начинается и заканчивается изучением страничной организации памяти и буфера ассоциативной трансляции (Translation Lookaside Buffer, TLB). Самое интересное при этом остается за кадром.
Читать дальше →

Личный опыт получения Голубой карты в Германии 2015-2016. Часть 3: Приезд в Германию

Reading time6 min
Views19K
Предыстория тут

Итак, 1 октября мы с женой прилетели в Гамбург. Далее на поезде доехали до Фленсбурга. Прибыли на место мы в районе 4 часов дня. Ни о какой работе речи идти уже не могло, хотя, официально, это был мой первый рабочий день.

Меня встретил мой русскоговорящий коллега Игорь и мы отправились на съемную квартиру, которую я предварительно на неделю снял на AirBnb. Знакомая владелицы квартиры показала нам все угодья и отдала ключи. Квартира была отличная, нам понравилось все, кроме температуры (в Германии отопление регулируется вручную и часто отключается хозяевами в целях экономии). Мы тут же включили отопление на максимум.

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

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

С маленькой или с Большой

Reading time5 min
Views37K
Такая мелочь, как применения заглавных букв может быть весьма важной. Для английского языка. Статья будет особенно полезна тем, кто занимается разработкой продуктов на английском.
(Кстати, кто еще не знает, «вуз» пишется маленькими буковками.)

image

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

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

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

Фотографии без фокуса

Reading time1 min
Views28K
Не секрет, что сейчас, чтобы сделать фото на обычной, так скажем, «мыльнице», нужно немного нажать кнопку, после этого объектив сфокусируется на объекте и потом, когда мы уже видим чёткое изображение в видоискателе (или на экране), нажать кнопку до конца и сделать фото. В принципе, всё просто и понятно.



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


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

Information

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