Pull to refresh
54
0
Виктор Мельник @aNNiMON

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

Send message

Функторы, аппликативные функторы и монады в картинках

Reading time5 min
Views192K
Вот некое простое значение:


И мы знаем, как к нему можно применить функцию:


Элементарно. Так что теперь усложним задание — пусть наше значение имеет контекст. Пока что вы можете думать о контексте просто как о ящике, куда можно положить значение:


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


data Maybe a = Nothing | Just a

Позже мы увидим разницу в поведении функции для Just a против Nothing. Но сначала поговорим о функторах!
Читать дальше →
Total votes 184: ↑175 and ↓9+166
Comments60

Android runtime permissions. Почему, зачем и как

Reading time12 min
Views122K
Часто при установке приложения на Android нам приходилось видеть, что оно запрашивает какое-то немыслимое количество разрешений. Например:



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

Некоторые разработчики, чтобы уменьшить недоверие, добавляют в описание приложения на Google Play информацию о том, зачем нужно то или иное разрешение.

К шестой версии Android ситуация поменялась. Теперь разрешения нужно запрашивать в процессе работы. О том, как этой новой возможностью пользоваться и ее некоторых подводных камнях будет рассказано далее.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments13

6 секретов Bitbucket

Reading time4 min
Views91K
Один из принципов дизайна в Atlassian — лаконичность. В ходе эволюции UX некоторые непопулярные действия, расчитанные на опытных пользователей, были спрятаны в выпадающих списках или за горячими клавишами. Там они ждут предприимчивого пользователя, который случайно наткнётся на них благодаря случайному нажатию клавиш или клику мышки (ну, или заглянет в руководство). Вот шесть моих любимых трюков Bitbucket Cloud, о которых вы, возможно, никогда не слышали:

Омнибар


Омнибар в Bitbucket — это строка быстрого доступа к действиям, похожая на ⇧⇧ в средах разработки JetBrains или ⌘+P в Sublime Text. Запустить омнибар можно на любой странице, нажав клавишу точки.

По умолчанию, он покажет набор действий, соответствующих текущему контексту:
Omnibar
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments19

Опасное видео: как я нашёл уязвимость в видеохостингах и не умер через 7 дней

Reading time6 min
Views104K


Всем привет! Я Максим Андреев, программист бэкенда Облака Mail.Ru. В свободное время я люблю искать баги. В сегодняшнем посте я хочу рассказать об одной довольно интересной уязвимости, которую я нашёл и зарепортил в bug bounty нескольких крупных компаний, за что получил солидное вознаграждение. Уязвимость заключается в следующем: если сформировать специальный видеофайл и загрузить его на сервер, то:

  • можно получить на нём SSRF;
  • можно получить local file read;
  • если пользователь скачает этот файл, то автоматически будет подвержен уязвимостям, даже если его не откроет: можно будет получить доступ к данным на компьютере пользователя и узнать его имя.

Читать дальше →
Total votes 255: ↑250 and ↓5+245
Comments66

GIF изнутри

Reading time7 min
Views57K

Вам когда-нибудь было интересно, как устроены gif-ки? В данной статье попробуем разобраться с внутренним строением GIF-формата и методом сжатия LZW.

Структура GIF


Файл в формате GIF состоит из фиксированной области в начале файла, за которой располагается переменное число блоков, и заканчивается файл завершителем изображения.


Читать дальше →
Total votes 80: ↑74 and ↓6+68
Comments17

Обработка аннотаций в процессе компиляции

Reading time10 min
Views36K
magicМетапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения.

Аннотации, как инструмент метапрограммирования появились вместе с релизом Java 5 в далеком 2004 году. Вместе с ними появился инструментарий Annotation Processing Tool, на смену которому пришла спецификация JSR 269 или Pluggable Annotation Processing API. Что интересно, этой спецификации без малого 10 лет, но свою популярность в Android разработке она начала обретать только сейчас.

О возможностях, которые открывает эта спецификация мы поговорим чуть позже (будет мнооого кода), а сперва, не хотите ли поговорить о компиляции Java кода?
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments17

Грокаем* RxJava, часть первая: основы

Reading time7 min
Views179K
* от переводчика: я долго думал над тем, как перевести на русский язык глагол «to grok». С одной стороны, это слово переводится как «понять» или «осознать», а с другой стороны, при переводе романа Роберта Хайнлайна «Чужак в чужой стране» (в котором это слово впервые и появилось на свет), переводчики сделали из него русское «грокать». Роман я не читал, поэтому счёл, что есть у этого слова какие-то смысловые оттенки, которые русскими аналогами не передавались, а посему в своём переводе использовал ту же самую кальку с английского.

RxJava — это, сейчас, одна из самых горячих тем для обсуждения у Android-программистов. Единственная проблема состоит в том, что понять самые её основы, если вы не сталкивались ни с чем подобным, может быть довольно затруднительно. Функциональное реактивное программирование довольно сложно понять, если вы пришли из императивного мира, но, как только вы разберётесь с ним, вы поймёте, насколько же это круто!
Я постараюсь дать вам некое общее представление об RxJava. Задача этого цикла статей состоит не в том, чтобы объяснить всё вплоть до последней запятой (вряд ли я смог бы это сделать), но, скорее в том, чтобы заинтересовать вас RxJava, и тем, как она работает.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments28

Зри в корень: java.lang.Object

Reading time8 min
Views86K
В Java в вершине иерархии классов лежит класс java.lang.Object. Лежит и лежит, долгое время я им совсем не интересовался.

На собеседованиях часто спрашивают, какие в нем есть методы, поэтому они как-то сами собой выучились. Пришло время посмотреть на этот класс более внимательно. Первый вопрос, который у меня возник, есть ли вообще в исходниках Java класс java.lang.Object. Он же ведь необычный, он вполне может быть жестко зашит в реализацию, как самый верхний.

Однако, такой класс есть и я приведу тут исходники java/lang/Object.java, опустив javadoc, и попытаюсь пролить свет на некоторые моменты связанные с реализацией jvm:
Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments16

Best practices от Google по разработке Android приложений

Reading time8 min
Views45K
В данной статье я хотел бы вкратце рассказать про самые последние best practices от Google. Я постарался выделить самые основные моменты, чтобы читатель сразу мог понять, что именно какая-либо фича дает разработчику. Не удивляйтесь, если где-то повторяюсь. Конспектировал + добавлял от себя по ходу просмотров видео в www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg

Также к каждому пункту приводятся все необходимые ссылки для более подробного ознакомления с конкретной best practice.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments18

Семь итераций наивности или как я полтора года свою дебютную игру писал

Reading time32 min
Views78K
imagination С появлением у меня в первом классе Dendy вопрос кем я стану отпал сам собой буквально через пару недель — программистом конечно же. Я долго и упорно шел к этому, невзирая на отсутствие информатики в школе, работал в техподдержке известного всем регистратора параллельно с учебой в институте, но полноценная жизнь началась лишь в тот момент, когда меня наконец-то взяли хоть куда-то писать код.

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

Под катом лежат семеро очевиднейших (как мне сейчас кажется) граблей, неожиданно вставших у меня на пути, а потому способных с отличной от нуля вероятностью встать на пути любого, идущего дорогой разработки игр.
Семь не слишком оригинальных мишеней для лба, разбавленных повествованием
Total votes 100: ↑96 and ↓4+92
Comments137

Высокопроизводительный код на платформе .NET

Reading time16 min
Views34K
Здравствуйте, дорогие читатели!

Не так давно мы занялись проработкой книги "Writing High-Performance .NET code", которая до сих пор не переведена на русский язык, хотя ей и скоро год.



Нас, конечно, не удивило, что такую книгу уже растаскивают на цитаты, однако выяснилось, что уважаемый автор Бен Уотсон даже выложил на сайте «Codeproject» целую статью, написанную по мотивам одной из глав. К сожалению, объем этого материала слишком велик для хабропубликации, однако мы решили все-таки перевести первую часть статьи, чтобы вы могли оценить материал книги. Приглашаем к прочтению и к участию в опросе. Кроме того, если все-таки целесообразно перевести и вторую часть — пишите в комментариях, постараемся учесть ваши пожелания.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments12

Детальный анализ Хабрахабра с помощью языка Wolfram Language (Mathematica)

Reading time8 min
Views54K

Скачать пост в виде документа Mathematica, который содержит весь код использованный в статье, вместе с дополнительными файлами, можно здесь.

Анализ социальных сетей и всевозможных медиа-ресурсов является сейчас довольно популярным направлением и тем удивительнее для меня было обнаружить, что на Хабрахабре, по сути, нет статей, которые содержали бы анализ большого количества информации (постов, ключевых слов, комментариев и пр.), накопленного на нем за довольно большой период работы.

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

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

Ввиду того, что база данных, построенная в посте, формировалась за некоторое время до публикации, а именно 26 апреля 2015 г., посты, опубликованные на Хабрахабре после этой даты (а также, возможно, новые хабы) в данном посте не рассматривались.
Читать дальше →
Total votes 158: ↑150 and ↓8+142
Comments61

10 вещей, которых вы не знали о Java

Reading time8 min
Views105K
Итак, вы работаете на Java с самого её появления? Вы помните те дни, когда она называлась «Oak», когда про ООП говорили на каждом углу, когда сиплюсплюсники думали, что у Java нет шансов, а апплеты считались крутой штукой?

Держу пари, что вы не знали как минимум половину из того, что я собираюсь вам рассказать. Давайте откроем для себя несколько удивительных фактов о внутренних особенностях Java.
Читать дальше →
Total votes 93: ↑91 and ↓2+89
Comments55

02 Ссылки для UX-специалистов

Reading time3 min
Views33K
В этой подборке продолжаю делиться информационными ресурсами, где можно почерпать новые знания, отследить новые методы, техники и аналитку, а также улучшить свои навыки в области UX. В отдельном абзаце собрал некоторые материалы по UX в области носимых устройств.


Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments0

20 самых популярных выступлений всех времен на конференции TED

Reading time3 min
Views354K
Привет, Хабр. Я знаю, что здесь уважают и любят выступления TED. Поэтому я не мог пройти мимо новости о том, что сайт ted.com после редизайна обновил плейлист «20 самых популярных выступлений на TED всех времен». Это яркий пример того, как путем послабления копирайта (все лекции TED находятся в открытом доступе, распространяются по лицензии CC, согласно которой разрешено все, кроме коммерческого использования) и организации краудсорсинга (все переводы выполняют волонтеры) можно добиться впечатляющих результатов…



Ранее на Хабре уже публиковался этот плейлист, но с тех пор он заметно обновился. Не изменился разве что лидер рейтинга — Кен Робинсон с выступлением «Как школы подавляют творчество».

Рейтинг составлен по количеству просмотров (в статистике учитывались данные с TED.com, Youtube, iTunes, Hulu, встроенных фреймов, количества скачиваний и т.д.)

Большинство лекций переведены на русский язык, с субтитрами или в озвучке. Не буду много писать, это нужно смотреть. Остальное под катом.
Читать дальше →
Total votes 117: ↑109 and ↓8+101
Comments22

xkcd представляет: результаты опроса о цветах

Reading time5 min
Views120K
Кто, глядя на радугу, способен указать точную границу, где кончаются синие тона и начинаются оранжевые? Мы ясно видим различие цветов, но где всё-таки один сменяет другой? Вот так же обстоит дело и с болезнями рассудка.
— Герман Мелвилл, «Билли Бад, фор-марсовый матрос»

Оранжевый? Красный? Я уже не знаю, чему и верить!
— Аноним, «Опрос о цветах»

ЕСЛИ СЛЕДУЮЩИЙ ВОПРОС БУДЕТ ОПЯТЬ ПРО ЦВЕТА Я ВЫКОВЫРЯЮ ЛОЖКОЙ ТВОЁ СЕРДЦЕ И СОЖРУ ЕГО
— Аноним, «Опрос о цветах»

Огромное спасибо всем, принявшим участие в опросе! Было обработано 222 тысячи анкет, содержащих более пяти миллионов названий цветов.
Читать дальше →
Total votes 197: ↑189 and ↓8+181
Comments76

Венера или первые 60 kpx с другой планеты

Reading time8 min
Views214K
Когда мы слышим «фотография с поверхности другой планеты», то первым на ум, как правило, приходит Марс. Оно, конечно, и не удивительно: в последние годы мы избалованы стереоскопическими снимками HRSC, панорамами HiRISE с огромным разрешением, и марсоходом Curiosity с почти ежедневными фотоотчетами. И даже когда речь заходит об истории вопроса, вспоминаем успех американских миссий «Викинг». Но мало кто помнит (или даже знает) о том, что первая в истории фотография с поверхности другой планеты получена не на Марсе и не американским аппаратом, а советской станцией «Венера-9» в 1975 году.

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



Читать дальше →
Total votes 231: ↑229 and ↓2+227
Comments187

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

Reading time3 min
Views53K
image

3 года назад в Мексике (стране, где находится Ciudad Juárez, самый опасный город мира), два друга из города Mérida открыли Twitter-аккаунт, чтобы предупреждать людей об обременительных полицейских проверках, которые слишком часто становились причиной различных неудобств для горожан.

Бесплатный сервис, названный Ret.io, превратился в гибкую автоматизированную систему, покрывающую всю Мексику. На сервис подписаны 27,000 человек, и его посещают более 100,000 человек в месяц, а соответствующее приложение для iPhone вышло в десятку лучших в категории Навигация.

Сегодня, с помощью Retio, граждане Мексики предупреждают друг друга об актуальных проблемах: перестрелках, убийствах, угрозах, вандализме, перекрытых дорогах, злоупотреблениях полномочиями, всех видах коррупции, ограблениях, пожарах, отключениях электричества, ДТП.
Читать дальше →
Total votes 88: ↑84 and ↓4+80
Comments68

Путь от 350 килобайтовой мобильной игры до большого проекта под разные платформы

Reading time11 min
Views4K
imageЗахватывающее приключение, море экшина, возможность полетать в космическом корабле и многое другое – то чего пока каждому из нас недостает в реальной жизни. Но эту проблему частично попробовали решить разработчики из Fishlabs. На недавно состоявшемся геймскоме была анонсирована игра Galaxy on Fire 2 Supernova. Специальные гости поведали много интересного о процессе разработки и деталях их проекта. В интервью Михаэль Шаде – со основатель компании Fishlabs а также Марк Химайер — СТО Fishlabs рассказали о игре поподробней. Думаю многим будет интересно какие ключи для достижения столь большого успеха использовали эти люди тем более учитывая что именно Galaxy on Fire эта та игра которая получила множество наград разного рода. Вашему вниманию предлагаю вольный перевод диалога. Некоторые моменты были упущены но в основном целостность картины сохранилась. Само видео на английском языке можете найти тут.
Ознакомиться
Total votes 37: ↑29 and ↓8+21
Comments37

7 минут ужаса

Reading time2 min
Views4.9K
Только что, вспомнив про это, я зашел на хабр, в надежде увидеть еще немного информации по этому поводу, но, к моему удивлению, есть всего одна статья, датированная ноябрем!

А о чем собственно сабж?

Завтра (06.08), в 9:20 по МСК (неточное время), автономно-управляемый аппарат Nasa, названный Curiosity, будет совершать посадку на поверхности Марса.
Сажать аппарат так далеко от Земли сложно тем, что человек не может вмешаться в процесс, точнее может, но уже, скорее всего, будет поздно. От нас до Марса, радио-сигнал идет 14 минут.
Таким образом — правильно сесть на планету, с очень разряженной атмосферой и огромным слоем космической пыли на поверхности, очень не легко. Перед учеными стояла задача — спланировать эту посадку от начала и до конца, и вот как они ее решили:


(Здесь в хорошем качестве, но без субтитров.

Читать дальше →
Total votes 120: ↑115 and ↓5+110
Comments132

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity