Pull to refresh
64
0
Алексей Акимов @AlexAkimov

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

Send message

Иммутабельность в JavaScript

Reading time10 min
Views170K

habracut


Что такое иммутабельность


Неизменяемым (англ. immutable) называется объект, состояние которого не может быть изменено после создания. Результатом любой модификации такого объекта всегда будет новый объект, при этом старый объект не изменится.

Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments57

Волшебный интерфейс

Reading time11 min
Views33K
Powered Interface

Как-то на днях у меня возникла необходимость распечатать более десяти чеков из моей истории платежей, используя банкомат одного из крупнейших банков. Я перешёл в платежи, выбрал “История”, прокрутив скроллер списка до нужного платежа, выбрал его, а затем нажал кнопку “Операции” и выбрал печать. И так повторялось для каждого чека: каждый раз происходил переход в главное меню и всё начиналось заново. Я задумался — неужели, несмотря на обилие источников информации по UX, до сих пор тратятся огромные бюджеты на подобные неудобные интерфейсы? Почему разработчики не хотят делать интерфейс, позволяющий пользователю почувствовать себя волшебником, а делают пользователей беспомощными в достижении своих целей? Возможно, причина в том, что, несмотря на обилие теории, эти источники предоставляют мало примеров из реальных проектов.

Так как мы с коллегами буквально на прошлой неделе завершили большой проект Web Dashboard'а (точнее — компонента, позволяющего создавать и просматривать ваши собственные дэшборды), в котором как раз стояла цель разработки удобного интерфейса, я решил осветить в статье, на какие основные моменты при проектировании интерфейса стоит обратить внимание, и привёл примеры нашего решения.
Читать дальше →
Total votes 35: ↑33 and ↓2+31
Comments27

За один проход

Reading time7 min
Views156K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Total votes 73: ↑72 and ↓1+71
Comments56

Рисуем вместе. Портрет пользователя ИЕ 8 анфас

Reading time3 min
Views21K


Примечание: автор вообще сидит на Опере, но это совсем другой вид порока, и речь сейчас не о нём.

Многие из нас знают о тяжелой болезни веб-сообщества — пережившем своё браузере Internet Explorer 8, который всё никак не уйдёт на покой.

Поддержка его не то чтобы невозможна, но требует ненужных усилий. Что куда хуже, от реализации этой поддержки страдают и современные люди.

Под катом - текущая ситуация, вопрос к вам и ссылка на копипастящуюся версию картинки
Total votes 37: ↑29 and ↓8+21
Comments128

Как IT-фрилансеру стать предпринимателем. Часть 3

Reading time4 min
Views36K
Всем привет! Мы продолжаем серию постов о том, как IT-фрилансеру стать предпринимателем. Вы уже знаете, почему ИП лучше, чем ООО и как зарегистрировать ИП самостоятельно. Сегодня мы расскажем, что ждёт предпринимателя после регистрации.



Краткий путеводитель для начинающих предпринимателей от «Я люблю ИП»
Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments46

Да, я пишу десктопные приложения под Windows

Reading time5 min
Views120K


Здравствуйте, меня зовут Владимир и я анонимный разработчик десктопных приложений под Windows. В этом месте все должны сказать «Здравствуй, Владимир!», а кто-то может быть добавит «Молодец, что осознал!». А потом все похлопают. Нет, правда, иногда от чтения Хабра у меня возникают именно такое ощущение, что нормально, нет, даже не «нормально», а допустимо и одобряемо сегодня писать только микросервисы для каких-то стартапов, которые будут по какому-то REST API отдавать данные какому-нибудь фронтенду на Ангуляре, который и будет, наконец, показывать пользователю что-то невероятно полезное, вроде таблицы с аггрегированными отзывами о стрижках пуделей с возможностью посмотреть на гуглокартах где бы в вашем городе можно было сделать именно такую стрижку вашему пуделю (несуществующему). А никаких других программ писать уже нет-нет, никак нельзя! Что за чушь?!

Да, многое сегодня происходит в вебе и на мобильных устройствах, но, знаете ли, далеко не всё. Значительная часть приложений по-прежнему является десктопным софтом. И даже (о, ужас!) не под Mac Os или Linux, а под тот самый богомерзкий Windows. И, знаете ли, софт этот живёт, развивается, поддерживается и является ежедневным рабочим инструментом миллионов людей. И никуда он мигрировать не собирается, потому что есть причины, по которым иногда именно десктопное приложение является лучшим вариантом.
Читать дальше →
Total votes 272: ↑231 and ↓41+190
Comments565

SVG-иконки – много и со стилем

Reading time14 min
Views50K

Маленький рассказ о том, как наша команда решила организовать иконки в грядущем проекте. Чуть-чуть исторического экскурса, взгляды по сторонам (на PNG и векторные шрифты) и рассказ о том, как мы всё-таки обустроились в итоге.
Читать дальше →
Total votes 61: ↑58 and ↓3+55
Comments34

Перевод отрывков из книги Роберта Хайнлайна «Заберите себе правительство» — часть 5

Reading time14 min
Views36K

«Мама лучше знает!» и «Отец всегда прав!»


Типичная привычка людей старшего поколения – пичкать юных потомков изречениями, вроде «Чем старее, тем мудрее!». Молодые люди в ответ обижаются и негодуют, до тех пор, пока сами не постареют достаточно для того, чтобы поучать следующее поколение.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2

На Кикстартере — куртка для любителей выпить

Reading time1 min
Views10K


Осталось 10 часов до окончания приёма предварительных заказов на куртку The Drinking Jacket. Одежда с говорящим названием снабжена 2 внутренними и 2 внешними глубокими карманами (итого, под 4 ёмкости), скрытым карманом для фляжки, разворачиваемыми рукавами-перчатками и замком-молнией, открывающим пиво.

Удивительно, но куртка в 9 (!) раз превысила начальную цель по сбору средств: собрано заказов почти на полмиллиона долларов!
Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments12

Почему я прекратил ангел-инвестирование (и почему вы никогда не должны начинать). Часть 1

Reading time12 min
Views21K


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

Друг представил меня Клейтону Кристоферу (Clayton Christopher), который собирал деньги для своей новой алкогольной компании Deep Addy. Их первый продукт, сладкая чайная водка, был великолепен, и он был опытным предпринимателем, так что и я подключился к проекту.

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

Я ошибался.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments11

Защита переговоров. Антижучки и индикаторы поля

Reading time15 min
Views101K

Примеры найденных жучков (источник фото: Интернет)

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

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

Под катом немного исторических примеров прослушки и доступные способы самостоятельной проверки своих помещений.
(Если ваши далекие знакомые сталкивались с обнаружением и, не дай бог, с установкой жучков, поделитесь в комментах)
Читать дальше →
Total votes 59: ↑58 and ↓1+57
Comments35

Пациент скорее жив, чем мертв? Обследование здоровья программного проекта

Reading time3 min
Views5.6K


Чек-листы – это эффективный инструмент контроля. Они сводят к минимуму возможность упущения важной информации и снижают вероятность совершения ошибок типа «не знал, забыл, закрутился».

Стив Макконнелл в своей книге «Остаться в живых. Руководство для менеджеров программных проектов» приводит тест проекта на выживание. Этот чек-лист из 33-х пунктов, который должен иметь под рукой каждый менеджер, если он хочет привести проект к успеху. Процитирую этот тест с небольшими уточнениями, основанными на личном опыте.

Каждый из 33 пунктов оценивается от 0 до 3:
0 – даже не слышали об этом;
1 – слышали, но пока не применяем;
2 – применяется частично;
3 – применяется в полной мере.

Если какой-то пункт не применим, в силу особенности вашего проекта, ставим оценку равную единице. Итоговая оценка — сумма баллов, по всем пунктам.

Ну, что, берем в руки калькулятор и обследуем ваш проект?
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments1

У нас же есть техническое задание на систему / сайт / приложение / проект…

Reading time8 min
Views13K

Ситуация


  • На входе в студию клиент (виртуально / реально не важно).
  • Клиент хочет что-то заказать у нас — систему, сайт, приложение, аппу, что угодно — все что можно разработать и даже потом скрестить бульдога с муровьедом например (1С битрикс, просто 1С, другие системы и наша разработка).
  • Высылает он нам нечто (как мы это видим), называя это «тз» (как он это видит) и говорит — оценить / посчитать / задать вопросы и далее везде, ожидая в ответ как правило получить вполне конкретную точную цифру и срок (беру пример крайней клиники) когда это будет готово.
  • Ждет.


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

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

Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments11

On-Demand экономика: Причины неудач стартапа Homejoy

Reading time6 min
Views8K


C крахом Homejoy, инвесторы, СМИ и даже потребители начали сомневаться в принципах модели «экономики по требованию». И это вполне справедливо, учитывая объемы инвестиций в платформу за последние несколько лет (более $4 миллиардов в 2014 году).

С точки зрения инвесторов, модель достаточно приличная: масштабируемый продукт, который приносит прибыль с первого дня и имеет виральный эффект. Компания Homejoy ничем не отличалась от этого описания, но её история сложилась иначе.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments4

Автомобили могут извлекать энергию из ям на дорогах

Reading time2 min
Views9.8K


Дорог идеального качества не бывает. По пути обязательно встретится ямка или лежачий полицейский. В этом случае срабатывает подвеска автомобиля. Специалисты с кафедры машиностроения инженерного колледжа Политехнического университета Виргинии предлагают собирать энергию с таких препятствий.
Читать дальше →
Total votes 22: ↑14 and ↓8+6
Comments12

Новый функционал Google Analytics: когортный анализ

Reading time5 min
Views13K
Эксперт по web-аналитике с мировым именем Авинаш Кошик сокрушается в своём блоге о том, что правило 80/20 срабатывает, увы, и для аналитики. 80% пользователей используют лишь 20% доступных инструментов. А задумывались ли вы о том, что, пожалуй, самая мощная система web-аналитики доступна абсолютно бесплатно? Более того, вместе с ней доступна масса экспертизы на русском и английском языках, которая поможет освоиться с инструментом и создать аналитическую систему, «заточенную» именно под ваш бизнес.  Работа с аналитикой — одно из ключевых направлений деятельности в компании. Важно правильно поставить вопрос, своевременно увидеть признаки проблемы, собрать максимум информации и только потом принимать решение на основе анализа. Даже, если проблем нет и вы рады динамике абсолютно всех показателей, не стоит останавливаться — нужно узнать о причинах успеха, чтобы закрепить его.

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

12 малоизвестных фактов о CSS

Reading time9 min
Views60K
Предлагаю читателям «Хабрахабра» перевод статьи «12 Little-Known CSS Facts (The Sequel)». Она совсем недавно была упомянута в дайджесте интересных материалов из мира веб-разработки и IT.

Update: немного «шлифанул» перевод напильником. Выражаю благодарность всем неравнодушным читателям.
Внимание! Под катом почти 1.5 Мб картинок и много интересных ссылок.

Итак, начнём-с…

1. В свойстве border-radius можно использовать slash-синтаксис.


Об этом уже писалось 4 года назад, но многие новички и даже некоторые опытные разработчики не знают о существовании этой «фишки».

Верите или нет, но следующий код валиден:

.box {
  border-radius: 35px 25px 30px 20px / 35px 25px 15px 30px;
}

Читать дальше →
Total votes 73: ↑71 and ↓2+69
Comments21

Почему непросто показать все цвета в одномерном пространстве, и сколько раз это можно сделать

Reading time7 min
Views41K
Яндекс умеет подсказывать цвета по их названию и находить близкие к ним. Некоторое время назад эту подсказку (внутри себя мы называем такие штуки «колдунщиками») пришлось переделывать, чтобы она соответствовала виду поисковых результатов после их редизайна. И мы воспользовались этим поводом, чтобы поработать над ним всерьёз, — ведь оказалось, что расположить цвета линейно — очень нетривиальная задача.







В этом посте я хочу рассказать, какую интересную алгоритмическую задачу, которая потребовала погружения в теорию цвета, нам пришлось решать почти всем Яндексом, чтобы сделать новый колдунщик таким, каким его задумала команда.
Читать дальше →
Total votes 71: ↑68 and ↓3+65
Comments31

Такие удивительные семафоры

Reading time9 min
Views140K
От переводчика: Джефф Прешинг (Jeff Preshing) — канадский разработчик программного обеспечения, последние 12 лет работающий в Ubisoft Montreal. Он приложил руку к созданию таких известных франшиз как Rainbow Six, Child of Light и Assassin’s Creed. У себя в блоге он часто пишет об интересных аспектах параллельного программирования, особенно применительно к Game Dev. Сегодня я бы хотел представить на суд общественности перевод одной из статей Джеффа.

Поток должен ждать. Ждать до тех пор, пока не удастся получить эксклюзивный доступ к ресурсу или пока не появятся задачи для исполнения. Один из механизмов ожидания, при котором поток не ставится на исполнение планировщиком ядра ОС, реализуется при помощи семафора.

Раньше я думал, что семафоры давно устарели. В 1960‑х, когда еще мало кто писал многопоточные программы, или любые другие программы, Эдсгер Дейкстра предложил идею нового механизма синхронизации — семафор. Я знал, что при помощи семафоров можно вести учет числа доступных ресурсов или создать неуклюжий аналог мьютекса, но этим, как я считал, область их применения ограничивается.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments1
1
23 ...

Information

Rating
Does not participate
Location
Нидерланды
Registered
Activity