Чтобы просканировать веб-сайт или веб-приложение на наличие всевозможных уязвимостей, существует довольно обширный список программ. Такие программы называются сканеры уязвимостей. Главная цель таких утилит – найти уязвимости, собрать информацию о сайте, а также проверить, может ли сайт быть подвергнут сетевым атакам. Для таких целей отлично подойдет сканер под названием Arachni.
Программист
Кто рождается в споре?
Любой другой человек — это чёрный ящик, в который залетает информация, а вылетают из него некоторые выводы. Случается, что его выводы не соответствуют нашим. Давайте погрузимся в анатомию спора и посмотрим, что можно улучшить.
В ряде случаев взаимодействие в таких обстоятельствах вообще не имеет смысла. Иногда проблема не настолько важна, иногда человека вы видите в первый и последний раз, иногда у вас нет времени или внимания для дискуссии и ещё ряд иногда. Но если вы всё же закатали рукава для обсуждения разногласий, то давайте взглянем, как это происходит?
Flutter под капотом
В чём простота? С помощью десятка базовых виджетов можно собирать вполне приличные пользовательские интерфейсы. А со временем, когда багаж используемого скопится вполне приличный, вряд ли какая-то задача поставит вас в тупик: будь то необычный дизайн или изощренная анимация. А самое интересное — скорее всего вы сможете этим пользоваться, даже не задумываясь над вопросом: «А как оно вообще работает?».
Поскольку у Flutter открытые исходники, я решил разобраться с тем, что же там под капотом (on the Dart side of the Force), и поделиться этим с вами.
Как работает Flutter
Как Flutter работает на самом деле?
Что такое Widgets, Elements, BuildContext, RenderOject, Bindings?..
Сложность: Новичок
Вступление
В прошлом году (прим: в 2018), когда я начал свое путешествие в сказочный мир Flutter, в Интернете было очень мало информации по сравнению с тем, что есть сегодня. Сейчас, несмотря на то, что уже написано много материалов, лишь небольшая их часть рассказывает о том, как на самом деле работает Flutter.
Что же такое Widgets (виджеты), Elements (элементы), BuildContext? Почему Flutter быстрый? Почему иногда он работает не так, как ожидается? Что такое деревья и зачем они нужны?
В 95% случаев при написании приложения вы будете иметь дело только с виджетами, чтобы что-то отображать на экране или взаимодействовать с ним. Но неужели вы никогда не задумывались, как вся эта магия работает внутри? Как система узнает, когда обновить экран и какие части должны быть обновлены?
Содержание:
Маленькие задачи, а доверия ещё меньше
Почему делегирование обязанностей лучше, чем распределение задач
Доверие — высочайшая форма мотивации. Оно выявляет в людях самое лучшее.
Стивен Р. Кови, «Семь навыков высокоэффективных людей»
По сути, сегодня это стало священной мантрой управления проектами: разделяй работу на как можно меньшие по размеру задачи. Оцените их со своей командой. А затем закиньте их во всезнающий бэклог продукта. Однако никто, похоже, критически не изучал влияние этого подхода на профессию проектировщика ПО. В 90-х годах, когда я начинал заниматься программированием, мы работали иначе. Осмелюсь сказать, что тогда всё было чуть более профессиональным.
В те времена твой начальник нёс ответственность ещё за десяток или того больше задач, поэтому когда тебя нанимали, он мог облегчённо вздохнуть.
«Наконец-то, у нас появился Винсент, я могу поручить ему заняться A и B; Тед будет делать C, D
и E, Джен займётся F, G и H, а я смогу добраться до I, J, K, L и M».
Самое важное здесь то, что A и B были крупными задачами, например, целыми продуктами или большими системными библиотеками. На их создание и поддержку уходило всё твоё время. Они были делегированной ответственностью, а не просто задачами. Было просто при этом и управлять людьми. Если ты не справляешься, то начальник тебе об этом скажет.
Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство
Шаг первый — поплакать. Шаг второй — нырнуть под кат. Вопрос простой, а ответ — нет.
О структуре параллельных вычислений или доводы против оператора «Go»
Каждый язык, поддерживающий параллельные (конкурентные, асинхронные) вычисления, нуждается в способе запуска кода параллельно. Вот примеры из разных 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")
Amazon уличили в копировании топ-продуктов
Какой страшный сон предпринимателя? Что его продукт сделают лучше, дешевле, и начнут продавать без его ведома! Но такой страшный сон может стать настоящим кошмаром. Если копировать его вещь вдруг начнет самый могущественный ритейлер планеты. Он вдруг сам себя сделает твоим основным конкурентом, и фактически закончит твой бизнес одним движением мизинца.
Такое случилось с основателем Allbirds Тимом Брауном. О его перспективном обувном стартапе мы уже рассказывали год назад. Экологически чистые, простые кроссовки из шерсти овец-мериносов, без пластика и всего остального, за $95. Но, на их беду, они отказались торговать своей обувью на Amazon. Предпочли развивать свой сайт и свой бренд (благо, получили на это больше $80 млн инвестиций). И вот месяц с лишним назад Amazon вдруг начинает выпускать точно такие же с виду кроссовки. С теми же «пёрками». Только по $45.
Создаю глобальную базу знаний по элементам питания
На данный момент протестированы более 230 аккумуляторов и батареек. Сделано более 1000 тестов. Израсходовано 4 ящика батареек и несколько месяцев жизни.
Результатом проделанной работы стала база знаний по аккумуляторам и батарейкам. Под катом рассказываю почему я решил создать базу знаний и как это было сделано.
Information
- Rating
- 1,753-rd
- Registered
- Activity