Как стать автором
Обновить
29
0.3

Программист

Отправить сообщение

Обзор Arachni: фреймворк для поиска уязвимостей в веб-приложениях

Время на прочтение 6 мин
Количество просмотров 4.4K

Чтобы просканировать веб-сайт или веб-приложение на наличие всевозможных уязвимостей, существует довольно обширный список программ. Такие программы называются сканеры уязвимостей. Главная цель таких утилит – найти уязвимости, собрать информацию о сайте, а также проверить, может ли сайт быть подвергнут сетевым атакам. Для таких целей отлично подойдет сканер под названием Arachni.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 2

Кто рождается в споре?

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 1.8K

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

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

Поспорить
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 5

Flutter под капотом

Время на прочтение 11 мин
Количество просмотров 33K
Всем привет! Меня зовут Михаил Зотьев, я работаю Flutter-разработчиком в Surf. Мне, как, наверное, большинству других разработчиков, которые работают с Flutter, больше всего нравится то, как просто создавать с его помощью красивые и удобные приложения. Чтобы войти во Flutter разработку, нужно совсем немного времени. Недавно я работал в геймдеве, а теперь полностью переключился на кроссплатформенную мобильную разработку на Flutter.

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

Поскольку у Flutter открытые исходники, я решил разобраться с тем, что же там под капотом (on the Dart side of the Force), и поделиться этим с вами.


Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 15

Как работает Flutter

Время на прочтение 18 мин
Количество просмотров 58K


Как Flutter работает на самом деле?


Что такое Widgets, Elements, BuildContext, RenderOject, Bindings?..


Сложность: Новичок


Вступление


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


Что же такое Widgets (виджеты), Elements (элементы), BuildContext? Почему Flutter быстрый? Почему иногда он работает не так, как ожидается? Что такое деревья и зачем они нужны?


В 95% случаев при написании приложения вы будете иметь дело только с виджетами, чтобы что-то отображать на экране или взаимодействовать с ним. Но неужели вы никогда не задумывались, как вся эта магия работает внутри? Как система узнает, когда обновить экран и какие части должны быть обновлены?


Содержание:


Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 6

Маленькие задачи, а доверия ещё меньше

Время на прочтение 6 мин
Количество просмотров 8.5K


Почему делегирование обязанностей лучше, чем распределение задач


Доверие — высочайшая форма мотивации. Оно выявляет в людях самое лучшее.

Стивен Р. Кови, «Семь навыков высокоэффективных людей»

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

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

«Наконец-то, у нас появился Винсент, я могу поручить ему заняться A и B; Тед будет делать C, D
и E, Джен займётся F, G и H, а я смогу добраться до I, J, K, L и M».

Самое важное здесь то, что A и B были крупными задачами, например, целыми продуктами или большими системными библиотеками. На их создание и поддержку уходило всё твоё время. Они были делегированной ответственностью, а не просто задачами. Было просто при этом и управлять людьми. Если ты не справляешься, то начальник тебе об этом скажет.
Читать дальше →
Всего голосов 51: ↑47 и ↓4 +43
Комментарии 8

Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство

Время на прочтение 9 мин
Количество просмотров 286K
2,4 ГГц — это плохо. 5 ГГц — это хорошо. 6 ГГц — это ещё лучше, но послезавтра. Все это знают, кого я тут учу, в самом деле. Всё это хорошо, только делать-то что, когда ты такой, как умный, открываешь какой-нибудь Wi-Fi Explorer, а там сатанизм и этажерки, как на скриншоте?



Шаг первый — поплакать. Шаг второй — нырнуть под кат. Вопрос простой, а ответ — нет.
Когда это нас останавливало?
Всего голосов 111: ↑110 и ↓1 +109
Комментарии 234

О структуре параллельных вычислений или доводы против оператора «Go»

Время на прочтение 23 мин
Количество просмотров 10K


Каждый язык, поддерживающий параллельные (конкурентные, асинхронные) вычисления, нуждается в способе запуска кода параллельно. Вот примеры из разных API:


go myfunc();                                // Golang

pthread_create(&thread_id, NULL, &myfunc);  /* C with POSIX threads */

spawn(modulename, myfuncname, [])           % Erlang

threading.Thread(target=myfunc).start()     # Python with threads

asyncio.create_task(myfunc())               # Python with asyncio

Есть много вариантов нотации и терминологии, но одна семантика — запустить myfunc параллельно основной программе и продолжить родительский поток выполнения (англ. "Control Flow")

Читать дальше →
Всего голосов 30: ↑19 и ↓11 +8
Комментарии 50

Amazon уличили в копировании топ-продуктов

Время на прочтение 6 мин
Количество просмотров 34K


Какой страшный сон предпринимателя? Что его продукт сделают лучше, дешевле, и начнут продавать без его ведома! Но такой страшный сон может стать настоящим кошмаром. Если копировать его вещь вдруг начнет самый могущественный ритейлер планеты. Он вдруг сам себя сделает твоим основным конкурентом, и фактически закончит твой бизнес одним движением мизинца.


Такое случилось с основателем Allbirds Тимом Брауном. О его перспективном обувном стартапе мы уже рассказывали год назад. Экологически чистые, простые кроссовки из шерсти овец-мериносов, без пластика и всего остального, за $95. Но, на их беду, они отказались торговать своей обувью на Amazon. Предпочли развивать свой сайт и свой бренд (благо, получили на это больше $80 млн инвестиций). И вот месяц с лишним назад Amazon вдруг начинает выпускать точно такие же с виду кроссовки. С теми же «пёрками». Только по $45.

Читать дальше →
Всего голосов 45: ↑40 и ↓5 +35
Комментарии 193

Создаю глобальную базу знаний по элементам питания

Время на прочтение 2 мин
Количество просмотров 27K
Тестирую элементы питания на профессиональном оборудовании. Цель охватить большую часть рынка элементов питания Европы и России.

На данный момент протестированы более 230 аккумуляторов и батареек. Сделано более 1000 тестов. Израсходовано 4 ящика батареек и несколько месяцев жизни.

Результатом проделанной работы стала база знаний по аккумуляторам и батарейкам. Под катом рассказываю почему я решил создать базу знаний и как это было сделано.


Читать дальше →
Всего голосов 139: ↑139 и ↓0 +139
Комментарии 81

Информация

В рейтинге
1 841-й
Зарегистрирован
Активность