Pull to refresh
10
0

Senior QA Engineer

Send message

Онлайн-доски: обзор российских решений

Reading time8 min
Views38K

Удаленным командам нужно пространство для совместной работы. Где можно и простой мозговой штурм устроить, и сложные схемы построить.

Давайте вместе посмотрим, что есть на российском рынке. Сама начала активно искать замену Miro для своей команды — делюсь тем, что удалось найти.

Я взяла три российских решения: Pruffme, GetLocus и sBoard и сравнила их по ключевым параметрам.

Читать
Total votes 10: ↑9 and ↓1+8
Comments8

Микрофронты для всех. Как мы построили платформу UIF, и что под капотом

Reading time8 min
Views5.9K
Привет, на связи Павел Востриков, архитектор веб-направления в «Лаборатории Касперского». Сегодня я расскажу про User Interface Framework (UIF) — нашу внутреннюю платформу интеграции веб-приложений, которая позволяет проводить разработку микрофронтов и микросервисов разными командами, делает удобным переиспользование кода и увеличивает гибкость подхода, чтобы разные команды могли варьировать технологии под свои нужды.

image

Мы начали разрабатывать UIF еще в 2016 году, когда само понятие Micro-Frontends только входило в обиход. Платформа родилась из-за отсутствия на рынке готовых инструментов. А со временем стала одним из наших самых эффективных решений, существенно сократив нескольким продуктам time-to-market и стоимость разработки, и даже научилась автогенерировать UI!
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments15

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

Reading time8 min
Views66K

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

Я не буду пытаться сделать из вас эксперта в Bash, а просто покажу минимальный шаблон, который поможет сделать ваши скрипты более надежными и безопасными.

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

Как работает React: подробное руководство

Reading time22 min
Views43K


Привет, друзья!


В этой статье я покажу вам, с чего начинается React.


Что это означает? Это означает, что мы разработаем мини-версию React, которая сможет выполнять следующий код:


import '../style.scss'
import MyReact from './my-react'

const buttonStyles = {
 border: 'none',
 outline: 'none',
 padding: '0.3rem 0.5rem',
 marginLeft: '0.5rem',
 backgroundImage: 'linear-gradient(yellow, orange)',
 borderRadius: '2px',
 boxShadow: '0 1px 2px rgba(0, 0, 0, 0.2)',
 cursor: 'pointer'
}

/** @jsx MyReact.createElement */
function Counter() {
 const [value, setValue] = MyReact.useState(1)
 const [count, setCount] = MyReact.useState(1)

 return (
   <section>
     <h1 className='title'>Hello from MyReact!</h1>
     <div className='box'>
       <input
         style='width: 80px; padding: 0.15rem 0.5rem;'
         type='number'
         value={value}
         onInput={(e) => {
           setValue(Number(e.target.value))
         }}
       />
       <button
         style={buttonStyles}
         onClick={() => {
           setCount((count) => count + value)
         }}
       >
         Increment
       </button>
     </div>
     <h2 className='subtitle'>
       Count: <span className='count-value'>{count}</span>
     </h2>
     <ul className='list'>
       {['React', 'from', 'scratch'].map((item) => (
         <li>{item}</li>
       ))}
     </ul>
   </section>
 )
}

MyReact.render(<Counter />, document.getElementById('app'))

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


Исходный код проекта.


Скриншот:





Песочница:

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

Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments5

Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад

Reading time11 min
Views23K
Это — тёплая, ламповая статья об Ассемблере и разработке ПО. Здесь мы не будем пытаться писать убийцу Майкрософта или Андроида. Мы будем писать убийцу 2048. Здесь не будет докера и терраформа с кубером. Зато здесь вы сможете найти большое количество материалов по Ассемблеру, которые помогут вам вновь погрузиться в мир трёхбуквенных инструкций. Доставайте пивко, и поехали. (Саундтреком к этой статье можно считать IBM 1401 a system manual)

Читать дальше →
Total votes 101: ↑95 and ↓6+89
Comments100

Введение в программирование: заготовка игры-платформера на SDL в 300 строк C++

Reading time12 min
Views26K

Этот текст предназначен для тех, кто только осваивает программирование. Я читаю лекции по C++ на первом курсе местного университета, и в качестве практикума предлагаю запрограммировать любую игру (не выношу проектов типа "софт бронирования книг в местной библиотеке"). Соответственно, чтобы помочь начинающим, я сделал некоторое количество заготовок, с которых можно стартовать свой проект. Например, заготовку олдскульного 3д шутера в 486 строк C++ я уже описывал, а вот тут можно посмотреть, что из неё сделали первокурсники.


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



На данный момент проект содержит менее трёхсот строчек цпп:


ssloy@khronos:~/sdl2-demo/src$ cat *.cpp *.h | wc -l
296

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


Итак, поехали!

Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments128

Что наша жизнь? Игра

Reading time5 min
Views9.4K

Что делает в отпуске директор группы программерских компаний? То, что не может делать на работе. Программирует. Всласть. :)

Мне много лет, я выполз из тьмы и в Transport Tycoon Deluxe я играл ещё в то время, когда эта игра только появилась (это 94-й год).

Читать далее
Total votes 42: ↑40 and ↓2+38
Comments28

Карманная книга по TypeScript. Часть 2. Типы на каждый день

Reading time11 min
Views35K

image


Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript".

Другие части:



Обратите внимание: для большого удобства в изучении книга была оформлена в виде прогрессивного веб-приложения.


Примитивы: string, number и boolean


В JS часто используется 3 примитива: string, number и boolean. Каждый из них имеет соответствующий тип в TS:


  • string представляет строковые значения, например, 'Hello World'
  • number предназначен для чисел, например, 42. JS не различает целые числа и числа с плавающей точкой (или запятой), поэтому не существует таких типов, как int или float — только number
  • boolean — предназначен для двух значений: true и false

Обратите внимание: типы String, Number и Boolean (начинающиеся с большой буквы) являются легальными и ссылаются на специальные встроенные типы, которые, однако, редко используются в коде. Для типов всегда следует использовать string, number или boolean.

Читать дальше →
Total votes 35: ↑30 and ↓5+25
Comments1

Полезные консольные Linux утилиты

Reading time13 min
Views108K

В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Pentest утилиты, так как у них есть своя подборка.


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Читать дальше →
Total votes 118: ↑114 and ↓4+110
Comments110

10 лучших игр по программированию, которые улучшат ваши навыки

Reading time7 min
Views93K

Вы помните далёкие дни из детства, когда вы, проводили целый день, а иногда даже не ели целый день, чтобы поиграть в игры на Nintendo? (Ах, дни Mario и Contra!!!)

С того времени игры претерпели гигантские преобразования и сфера стала более обширной. Это уже не просто хобби. Сейчас в Интернете доступно множество игр, связанных с программированием, и вы можете использовать их чтобы изучить и отточить свои скилы в увлекательной форме. Более того, эти игры могут помочь вам улучшить навыки решения задач, поскольку вам нужно будет решать задачи различной сложности, а также соревноваться с другими опытными программистами по всему миру. Специально к старту новых потоков курсов Fullstack-разработчик на Python, разработка на C# и разработка на Java, в этой статье мы отобрали несколько таких игр, играя в которые можно параллельно качать и себя самого.

Start game
Total votes 21: ↑18 and ↓3+15
Comments12

3D-принтер из фанеры своими руками и его эволюция

Reading time7 min
Views43K

Хочу рассказать, как мы собрали 3д-принтер в домашних условиях, так сказать, из говна и палок. Это был школьный проект, который принес определенные плюшки в свое время. 

Читать далее
Total votes 37: ↑34 and ↓3+31
Comments29

Как я стал финансовым директором

Reading time5 min
Views16K

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

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

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

В структуру холдинга входило около 30 нефтехимических комбинатов. Надо отдать должное тогдашнему «Сибуру»: он покупал эти предприятия, которые часто были градообразующими, и восстанавливал их работу, возобновляя производство и выплату многомесячных долгов по зарплатам. Не будучи аудитором, я, тем не менее, помотался по Сибири и Уралу (СибУр), делая due diligence таких скупаемых заводов. Чего только ни удалось повидать! Самым безобидным – как говорят математики, «о-малое» – была подделка подписей и печатей. Больше всего, конечно, впечатляли мошеннические схемы приватизации, когда за деньги самих предприятий топ-менеджмент закупался акциями этих предприятий. Вот весь этот fraud мы и вскрывали.

Но основной моей работой в головной конторе была автоматизация бухучета. Когда я только приступил в работе и заявил бухгалтерам, коих насчитывалось аж 4 десятка человек, что мой девиз «Облегчить жизнь бухгалтеру», мои слова вызвали лёгкое недоумение. А когда я заявил, что через 3 месяца они все будут уходить с работы не в 9 часов вечера, как сейчас, а в конце рабочего дня – в 6 часов, на меня и вовсе посмотрели, как на идиота: он просто не знает, какой тут безумный объём работы. Прошёл месяц, бухгалтеры ушли с работы в 8, после чего стали смотреть на меня с неким любопытством… Прошёл второй месяц, бухгалтеры ушли с работы в 7, и стали посматривать на меня с заметным интересом… После третьего месяца, когда они ушли с работы в 6, в глазах читалось уважение: он отвечает за свои слова. С этого момента меня стали считать своим и отношение кардинально переменилось: когда надо было что-то улучшить или ускорить, всё чаще звучала фраза: «Давайте спросим Колю – он что-нибудь придумает».

Читать далее
Total votes 50: ↑30 and ↓20+10
Comments41

Пишем загрузчик на Ассемблере и C. Часть 1

Reading time22 min
Views38K


Эта статья представляет собой ознакомительный материал о написании загрузчика на С и Ассемблере. Сразу скажу, что здесь я не буду вдаваться в сравнение производительности итогового кода, созданного на этих языках. В этой работе я просто вкратце изложу процесс создания загрузочного флоппи-образа путем написания собственного кода с последующим его внедрением в загрузочный сектор устройства. Все содержание будет разделено на цикл из трех статей, так как сразу сложно изложить всю нужную информацию и о компьютерах, и об устройствах загрузки, и о написании самого кода. В первой части я поясню наиболее общие аспекты компьютерной науки и суть процесса загрузки, а также обобщу значение и важность каждого этапа, чтобы упростить их понимание и запоминание.
Читать дальше →
Total votes 49: ↑42 and ↓7+35
Comments73

Статьи — это тоже исходный код {

Level of difficultyMedium
Reading time9 min
Views14K

Title


Открываю VS Code и начинаю набирать статью с самого начала. Но вот незадача — формат маркдауна не совсем совместим с имеющимся форматом Хабра. Получается выхода нет и придётся возвращаться к встроенному редактору Хабра;


Или не придется?

В голову пришла идея написать утилиту, которая конвертирует разные форматы маркдаунов друг в друга, например, из формата GitHub в формат Habr;


Такую программу я в итоге и разработал. Теперь не надо копировать статьи в редактор Хабра, чтобы посмотреть как она выглядит, можно продолжать писать в любимом VS Code;


Хотя я и использую множество плагинов VS Code, но мысли о неэффективном процессе написания статей не исчезли. Раз уж я набираю текст в VS Code, то почему бы сразу не делать коммиты контента в гит-репозиторий?


Это дало бы немало новых возможностей, которыми пользуются программисты: версионирование, бекапы на локальные носители или веб-сервисы, правки от редакторов и пользователей. А еще можно внедрить CD/CI;


В итоге, я написал небольшой гайд для разработчиков, как писать техническую документацию в редакторах, используя мою утилиту. Саму утилиту можно посмотреть в моём репозитории на GitHub;

Читать дальше →
Total votes 64: ↑63 and ↓1+62
Comments46

Самые маленькие Arduino для ваших мини-проектов + примеры самих проектов

Reading time5 min
Views51K

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

Эта подборка поможет выбрать то, что нужно. В ней собраны самые маленькие Arduino платы с разными характеристиками. Их можно использовать для разработки самых разных проектов — от роботов до носимых устройств. Есть и примеры проектов.
Total votes 26: ↑24 and ↓2+22
Comments23

Параллели между Factorio и проектированием ПО

Reading time5 min
Views19K

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

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

  • Требования понятны и на удивление точно соответствуют задаче.
  • Цикл редактирования, отладки и компиляции невероятно быстр. Благодаря этому, а также отличной системе тестирования можно за минуту проверить несколько потенциальных решений.
  • Платформа, от которой зависит код игрока (сама игра) не имеет багов. Не нужно чинить зависимости перед тем, как приступать к написанию собственного кода.

Должен ли проектировщик ПО сыграть в Shenzhen.io? Геймплей этой игры не для каждого. Некоторым он «слишком напоминает работу». В конце концов, играя, хочешь расслабиться, а не работать над задачами, которые уже выполняешь по восемь часов в день. Несмотря на это, я считаю, что стоит сыграть, просто чтобы понять, насколько интересной становится задача, когда требования понятны, а средства разработки — быстры. Все знают, что инвестирование в развитие и инструменты оправдывает себя, но удовольствие от игры подкрепляет это ощущение.

Вторая игра — это Factorio, которую выпустили в прошлую пятницу, хотя в раннем доступе в неё можно было играть уже почти четыре года. Те, кто в неё играл, сейчас, вероятно, недоумевают — ведь это игра о постройке фабрики, а не о кодинге. Игрок работает с конвейерами, металлом, нефтепродуктами и создаёт ресурсы, необходимые для изготовления космического корабля.
Total votes 23: ↑23 and ↓0+23
Comments18

Интеграция в проект LVGL графической библиотеки для микроконтроллеров

Reading time4 min
Views31K
LVGL — Light and Versatile Graphics Library также известная как LittleVGL.


Библиотека поддерживает большое количество микроконтроллеров, таких как STM32, ESP32 и другие. Мне пока удалось запустить полноценную демо программу на ESP32 и STM32f429 Discovery. Библиотека открытая, поддерживает большое количество графических элементов с Dark and Light темами. Распространяется под MIT license. Можно свободно использовать даже в коммерческих продуктах. Можно посмотреть интерактивное Online Demo без установки на устройство
Total votes 39: ↑39 and ↓0+39
Comments56

Mockito и как его готовить

Reading time21 min
Views299K

О статье


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


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

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

15 лучших и крупнейших библиотек иконок

Reading time3 min
Views35K


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

Сразу уточняем: это не 15 самых лучших библиотек, а 15 из лучших. Разумеется, есть и другие, не менее замечательные, о которых я не упомянул или не знаю.
И, нет, это не рейтинг — список маркированный, а не нумерованный.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments12

Блокировать трекеры рекламы на сетевом уровне сложно, но возможно

Reading time4 min
Views33K
image


Когда вы выходите в интернет или используете приложение, множество компаний спокойно отслеживают каждое ваше действие. Некоторые, такие как Newrelic, достаточно невинны, они отслеживают ошибки пользователей и чтобы быстрее на них реагировать. Но другие, такие как Facebook Audience Network, собирают огромное количество данных как с ваших собственных устройств, так и с устройств в вашей сети.

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

Пытаясь защитить свою частную жизнь, я решил, что лучше всего использовать ядерный метод: блокировать рекламу и трекеры во всей моей домашней сети.
Читать дальше →
Total votes 24: ↑20 and ↓4+16
Comments27
1

Information

Rating
Does not participate
Registered
Activity