Pull to refresh
21
0
Злой Щавель @Ghedeon

User

Send message

Жаргон функционального программирования

Reading time10 min
Views92K


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


В примерах используется JavaScript ES2015). (Почему JavaScript?)


Работа над материалом продолжается; присылайте свои пулл-реквесты в оригинальный репозиторий на английском языке.


В документе используются термины из спецификации Fantasy Land spec по мере необходимости.


Arity (арность)


Количество аргументов функции. От слов унарный, бинарный, тернарный (unary, binary, ternary) и так далее. Это необычное слово, потому что состоит из двух суффиксов: "-ary" и "-ity.". Сложение, к примеру, принимает два аргумента, поэтому это бинарная функция, или функция, у которой арность равна двум. Иногда используют термин "диадный" (dyadic), если предпочитают греческие корни вместо латинских. Функция, которая принимает произвольное количество аргументов называется, соответственно, вариативной (variadic). Но бинарная функция может принимать два и только два аргумента, без учета каррирования или частичного применения.

Читать дальше →
Total votes 91: ↑87 and ↓4+83
Comments113

Как внедряли Kotlin Multiplatform в Профи

Reading time7 min
Views14K

Привет, Хабр! Я Миша Игнатов, тимлид в компании Профи. Моя команда отвечает за клиентские мобильные приложения на Android и iOS. Мы используем Kotlin Multiplatform в production с 2019 года. Расскажу, почему мы выбрали именно эту технологию, как внедряли её, какие ключевые этапы прошли и какие сделали выводы.

Читать далее
Total votes 15: ↑14 and ↓1+15
Comments8

Слушаем 15 лучших ИТ-подкастов

Reading time5 min
Views42K


Один из признаков настоящего профи — интерес к выбранному делу и готовность узнавать новое, расширяя границы выбранной профессии. Это утверждение на 100% подходит к ИТ-индустрии, которая продолжает стремительно развиваться. Мы выбрали для вас 15 интересных подкастов на эту тему.
Читать дальше →
Total votes 41: ↑39 and ↓2+45
Comments26

Почему большинство юнит тестов — пустая трата времени? (перевод статьи)

Reading time27 min
Views12K

Перевод статьи "Why most unit testing is waste?"

Автор: James O Coplien, Перевод: Епишев Александр  

1.1 Наши дни

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

Читать далее
Total votes 22: ↑15 and ↓7+13
Comments38

Практическое руководство по TypeScript для разработчиков

Reading time10 min
Views83K

Представляю вашему вниманию перевод статьи "Working With TypeScript: A Practical Guide for Developers".


Что такое TypeScript?


TypeScript — это популярный статический типизатор (static type checker) или типизированное надмножество (typed superset) для JavaScript, инструмент, разработанный Microsoft и добавляющий систему типов к гибкости и динамическим возможностям JavaScript.


TypeScript развивается как проект с открытым исходным кодом, распространяется под лицензией Apache 2.0, имеет очень активное и высокопрофессиональное сообщество, а также огромное влияние на экосистему JavaScript.


Установка TypeScript


Для того, чтобы начать работу с TypeScript, нужно либо установить специальный интерфейс командной строки (command line interface, CLI), либо воспользоваться официальной онлайн-песочницей или другим похожим инструментом.

Читать дальше →
Total votes 26: ↑24 and ↓2+33
Comments4

Chia-шиза добралась до России

Reading time2 min
Views64K

Chia — новая китайская криптовалюта, которая майнится на жестких дисках (работает на proof-of-space, а не на proof-of-work). В плане требовательности по ресурсам растет быстрее эфира и намного быстрее биткоина.

Всего месяц назад на Хабре говорили о том, что в будущем она может вызвать дефицит жестких дисков.

И теперь — пришло!

Читать далее
Total votes 36: ↑32 and ↓4+43
Comments191

Переводы малых сумм из Европы в Украину

Reading time2 min
Views10K

Здравствуйте, члены сообщества.

Задался вопросом, какой из путей перевода наиболее оптимальный.

Если нужно быстро, то paysend. Если нужны наличные евро, то Privatbank Eur.

Участники: Иностранный банк, Monobank Eur (SEPA), Monobank Uah, PrivatBank Eur, Paysend, TransferWise, MoneyGram.

Читать далее
Total votes 16: ↑13 and ↓3+14
Comments30

Фоновая работа в Android: обзор возможностей WorkManager

Reading time10 min
Views35K

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

Например, в ритейле мерчендайзерам бывает необходимо в конце каждого рабочего дня отправлять фотоотчеты на сервер и удалять их из памяти телефона, чтобы не занимать место. А для работы онлайн-кассы требуется в фоновом режиме загружать актуальный справочник товаров. В этой статье мы рассмотрим один из самых популярных инструментов для реализации фоновой работы – WorkManager из Android Jetpack. 

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments6

Как быть более продуктивным, не заставляя себя

Reading time8 min
Views72K

Представьте, что вы могли бы работать больше и при этом быть супер-продуктивным. И знаете, что самое приятное? В этом случае вам не пришлось бы заставлять себя работать.

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

Давайте начнем.

Большинство людей испытывает негативные чувства по отношению к своей работе. Они думают, что работа — это что-то неприятное, в отличие от развлечений. Работа воспринимается как раздражающее занятие, которое мешает людям делать то, чем им на самом деле хочется заниматься. Люди также полагают, что отдых и полное безделье — это идеальное состояние, в котором они хотели бы находиться всё время. Такое мышление приводит к тому, что человек начинает думать, что нужно заставлять себя работать через силу, и что работа — это очень тяжело, и лишь железная сила воли поможет справиться с ней.
Читать дальше →
Total votes 51: ↑46 and ↓5+57
Comments46

[Личный опыт] Удалёнка и жизнь на Пхукете: вечное лето и европейский сервис по азиатским ценам

Reading time12 min
Views29K

Остров Пхукет в Таиланде — настоящий тропический рай с вечным летом, теплым морем и фруктами круглый год. Фрилансеры и удаленщики часто уезжают сюда на зимовку, но это не единственный доступный сценарий. Мы поговорили с Олегом — человеком, который профессионально помогает иностранцам переехать на Пхукет. Он сам приехал сюда в 2013 году, открыл бизнес и не просто зимует, а живет постоянно. Он расскажет, как вообще живется на Пхукете, что тут делать IT-специалисту, насколько легко остаться на ПМЖ и что ждет постоянных жителей и тех, кто хочет приехать на зимовку.




Источник
Читать дальше →
Total votes 24: ↑19 and ↓5+19
Comments69

Reaction — обработка результатов методов в Kotlin

Reading time4 min
Views8.2K

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

Читать далее
Total votes 10: ↑9 and ↓1+15
Comments15

Дайджест интересных материалов для мобильного разработчика #384 (1 — 7 марта)

Reading time3 min
Views3.6K
В нашем новом выпуске безопасность iOS-приложений и новинки Android 12, 22 тысячи изменений в дизайне и победа над читерами, история кроссплатформы и Flutter версии 2.0, неэффективные руководители, инди-маркетинг и многое другое!

Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments0

Получаем результат правильно (Часть 1). Activity Result API

Reading time7 min
Views56K

Каждый Android-разработчик сталкивался с необходимостью передать данные из одной Activity в другую. Эта тривиальная задача зачастую вынуждает нас писать не самый элегантный код. 

Наконец, в 2020 году Google представила решение старой проблемы — Activity Result API. Это мощный инструмент для обмена данными между активностями и запроса runtime permissions. 

В данной статье мы разберёмся, как использовать новый API и какими преимуществами он обладает.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments5

Как я готовился к собеседованию в Google

Reading time9 min
Views49K
Каждый инженер-программист стремится впечатлить людей своим техническим мастерством. Технологические гиганты этого мира — прекрасное место для работы технарей, которые могут предоставить услуги миллиардам пользователей. На моём недавнем собеседовании было несколько раундов, я получил предложения от Google и Amazon. В последние несколько лет онлайн-сообщество очень помогло мне в подготовке к собеседованиям. В этом посте я поделюсь всем о моём пути к собеседованию и верну вклад общества в моё обучение.


Приятного чтения!
Total votes 40: ↑35 and ↓5+45
Comments77

Что общего между собеседованием в FAANG и гражданской авиацией

Reading time9 min
Views6.5K

Куда лучше устроиться: в корпорацию или стартап? Этот вопрос волнует не только разработчиков, но и всех, кто так или иначе связан с IT. Мы поговорили с Булатом Фаттаховым, который сменил Яндекс на развивающийся Evolution Gaming, а затем еще пару других компаний и стран прежде, чем оказаться в Google.

Обсудили его опыт работы в Google: компанию, образование, подготовку и ошибки на собеседованиях. А еще поговорили о том, куда проще устроиться с узкой специализацией, а куда ― совсем без опыта. 

Булат ― Boston-qualified, Software Development Engineer в швейцарском офисе Google, разрабатывает бэкенд Google Карт, марафонец, игрок спортивной версии «Что? Где? Когда?» и «Своей Игры».

Так при чём здесь авиация?
Total votes 10: ↑6 and ↓4+7
Comments2

Splay-дерево. Поиск

Reading time13 min
Views9.8K

Наихудшая временная сложность таких операций, как поиск, удаление и вставка, для двоичного дерева поиска (Binary Search Tree) составляет O(n). Наихудший случай случай возникает, когда дерево несбалансировано. Мы можем улучшить наихудший результат временной сложности до O(log n) с помощью красно-черных и АВЛ-деревьев.

Можем ли мы добиться на практике лучшего результата, чем тот, что нам дают красно-черные или АВЛ-деревья?

Подобно красно-черным и АВЛ-деревьям, Splay-дерево (или косое дерево) также является самобалансирующимся бинарным деревом поиска. Основная идея splay-дерева состоит в том, чтобы помещать элемент, к которому недавно осуществлялся доступ, в корень дерева, что делает этот элемент, доступным за время порядка O(1) при повторном доступе. Вся суть заключается в том, чтобы использовать концепцию локальности ссылок (в среднестатистическом приложении 80% обращений приходятся на 20% элементов). Представьте себе ситуацию, когда у нас есть миллионы или даже миллиарды ключей, и лишь к некоторым из них обращаются регулярно, что весьма вероятно для многих типичных приложениях.

Читать далее
Total votes 12: ↑9 and ↓3+9
Comments2

Программист учится рисовать. Дневник Емели

Reading time16 min
Views35K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

Еще в январе я дал себе некое обещание в виде цели к концу года — прокачать навык рисования (звучит конечно абстрактно и совсем не по SMART-у, я думаю, это и повлияло в дальнейшем на то, как я развивал этот навык весь год и что получилось в итоге).

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Total votes 105: ↑104 and ↓1+142
Comments123

Как мы выбрали архитектуру слоя представления на новом проекте и не прогадали

Reading time7 min
Views13K

Всем привет! Меня зовут Даниил Климчук. Год назад я пришел в vivid.money третьим Android-разработчиком. Несмотря на это, в проекте практически не было кода, а первые фичи только начинали разрабатываться. Нам нужно было запустить новое банковское приложение в европе, где придется конкурировать с такими компаниями, как Revolut. Уже тогда было понятно, что команда очень быстро значительно вырастет. Конечно, стоило сразу задуматься о том, как будет развиваться архитектура проекта. Через год, когда проект запустится, на это не останется времени, а оправданий вносить значительные изменения просто не будет. Одним из ключевых решений на начальном этапе стал выбор архитектуры слоя представления. В этой статье я поделюсь тем, как мы его принимали.

Читать далее
Total votes 11: ↑10 and ↓1+13
Comments9

Претотипирование — новый термин в словаре или как проверить идею очень дешево и очень быстро

Reading time9 min
Views11K

Проблема

У каждого из нас есть не менее одной идеи на миллион. Но далеко не у каждого получается воплотить свои задумки в жизнь. Этому есть ряд причин, о которых написано немало книг и статей. Известно также, что реализовать свои идеи не получается даже у крупных компаний с большим опытом, крутой командой и немалым бюджетом. Для примера можно посмотреть на «кладбище» проектов компании Google или «морг» Microsoft. Трудно представить, что у этих компаний столько много не получившихся проектов, на которые были потрачены немалые деньги и время.

Что делать? Какое решение? В этой статье собрана большая часть методов проверки гипотез, также рассказывается о новом термине «претотипирование» с примерами известных компаний.

Читать далее
Total votes 31: ↑31 and ↓0+31
Comments13

Почему не получается выучить английский?

Reading time3 min
Views44K

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

Сейчас в интернете только ленивый не проводит вебинары по английскому именно на эту тему: почему не получается выучить английский. И если вы на таких вебинарах были, или читали статьи на эту тему, то вы знаете, какой дается ответ: потому что нет системы, потому что учили не так, не то и не по тем материалам. Ведущие вебинара рассказывают, как надо, дают и систему, и материалы, и, если мы говорим о действительно опытных профессиональных преподавателях-ведущих, контент их действительно хорош. Обрадовавшись, люди хватаются за эту соломинку, воодушевляются, начинают работать по этим материалам следуя этой системе, но… Результаты вновь неутешительные. И человек приходит к единственно верному, на его взгляд, выводу: я не способен выучить английский. Кто-то одарен. Я – нет. И это понимание ввергает в еще большую депрессию…

А теперь я расскажу вам, что я думаю по этому поводу и отвечу на вопрос Почему не получается.

Сначала я хотела бы сказать вот что. Проблема в самой постановке вопроса: ВЫУЧИТЬ. Почему? Потому что язык – это не знания. Язык - это НАВЫК. И если мы будем относиться к языку как к навыку, то всё стазу встанет на свои места.

Как это сделать?

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

«Я хочу ВЫУЧИТЬ вышивание»
«Я много лет УЧУ езду на велосипеде»
«Сколько нужно заниматься, чтобы ВЫУЧИТЬ управление автомобилем?»

По-дурацки звучит, правда?

Кто их нас, желая освоить велосипед, чтобы в выходной погожий денек прокатиться в парке в свое удовольствие, часами смотрит видео тур де Франс, читает статьи о велосипедистах и сдает тесты про устройство велосипеда?
А вот теперь получается, что для того, чтобы эти фразы перестали странно звучать, надо заменить глагол:

Читать далее
Total votes 46: ↑35 and ↓11+37
Comments171

Information

Rating
Does not participate
Registered
Activity