{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Інструменти",
    "_rss_description": "Нотатки про інструменти якими я користуюсь",
    "_rss_language": "uk",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/stefaniuk.website\/tags\/tools\/",
    "feed_url": "https:\/\/stefaniuk.website\/tags\/tools\/json\/",
    "icon": "https:\/\/stefaniuk.website\/pictures\/userpic\/userpic@2x.jpg?1565716580",
    "authors": [
        {
            "name": "Bohdan Stefaniuk",
            "url": "https:\/\/stefaniuk.website\/",
            "avatar": "https:\/\/stefaniuk.website\/pictures\/userpic\/userpic@2x.jpg?1565716580"
        }
    ],
    "items": [
        {
            "id": "274",
            "url": "https:\/\/stefaniuk.website\/all\/about-notes\/",
            "title": "Про нотатки",
            "content_html": "<div style=\"max-width: 740px\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/notes-27-02-2023.jpg\" width=\"2560\" height=\"1440\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Софт який пройшов через мене<\/div>\n<\/div>\n<\/div><p>Не так давно з’явився великий тренд на ведення нотаток. Майже кожен місяць, якщо не частіше, виходять нові програми чи нові методики для ведення, групування та організації нотаток.<\/p>\n<p>В ютубі сотні відосів де всі хвалять той чи інший підхід: зетелькастен, evergreen notes, PARA, другий мозок, персональна вікі, сотні їх. Це стало новою модою. Популярність настільки велика, що їй важко чинити опір. Тож і я залюбки став пасажиром цього хайп-трейну.<\/p>\n<p>Як тільки виходила нова апка, то я обов’язково качав її, дивився відгуки й переносив все своє добро в нове місце. Витрачаючи велику кількість сил та часу, щоб все по новій організувати. Ця погоня за ідеальним блокнотом замінила собою саму суть створення нотаток.<\/p>\n<p>В якийсь момент починається автоматичне створення нотаток заради нотаток. І все тільки для того, щоб це красиво виглядало і вписувалось у нову модель організації. В мене було з сотню нотаток про C#, хоча вся ця інформація легко гуглиться і лежить в документації. Тому я ними не користувався, а одразу йшов в гугл.<\/p>\n<p>Складність інструментів та методик, з часом, приводили до того, що пропадало будь-яке бажання робити записи. Кожен раз, відкриваючи апку, я замість створення нотатки думав над тим яка в неї повинна бути структура, куди її треба покласти, щоб це відповідало методиці.<\/p>\n<p>Також, за час постійних переїздів, вискочила ще одна проблема — проприєтарний софт. Кожен другий стартап старається завʼязати вас на свою екосистему без можливості вивантажити свої дані, а якщо така можливість є, то це зроблено настільки погано, що просто немає бажання влазити в це. Коли ж мова йде про нотатки, то не хочеться, щоб вони пропали разом зі збанкрутілою компанією.<\/p>\n<p>Тому я на довго забив та вів записи як попало. Проте десь пів року назад я вирішив спробувати заново, але кардинально змінивши підхід.<\/p>\n<p>Першим ділом під видалення попали майже всі нотатки, що стосувалися програмування. Я вибрав найпростіший інструмент, який був мені доступним із коробки — Apple Notes. Коли у вас вся екосистема від Apple, то створювати та синхронізувати нотатки стає набагато легше.<\/p>\n<p>Наступним кроком була відмова від бездумного накопичування нотаток. Додаю тільки ту інформацію, яка рідко змінюється або важко гуглиться. Сюди можна віднести різні концепції із computer science чи system design. Зазвичай це важко нагуглити або інформація розкидана по різних книжках чи статтях. В такому випадку буде корисним зібрати все до купи й описати це зрозумілою для себе мовою.<\/p>\n<p>Все, що стосується мов програмування, бібліотек, функцій та методів зазвичай дуже легко гуглиться і немає сенсу додавати це до себе.<\/p>\n<p>Проте, одного разу мені стало тісно в Apple Notes, тоді під руку трапилась програма Nota. Власне кажучи, це звичайний редактор Markdown файлів без наворотів. Тому все, що стосується програмування та IT, переїхало туди.<\/p>\n<p>І тут я хочу підмітити одну важливу думку: не кидайтесь на першу-ліпшу програму. Почніть з самого простого і розвиньте звичку просто вести нотатки. Візьміть за правило не змінювати інструмент раніше шести місяців. Користуйтесь та відмічайте те, чого вам не вистачає. Вже потім шукайте інструмент який зможе закрити саме ваші проблеми, а не навʼязані.<\/p>\n<p>Зараз мій сетап виглядає максимально просто. Всі персональні нотатки живуть в Apple Notes, а все що стосується ІТ живе в Nota.<\/p>\n<p>Я не проти Obsidian, Roam чи іншого подібного софта. Для когось вони дійсно ідеальні та закривають всі потреби. Я лише хочу застерегти вас від хайпу та навʼязування вам проблем чи потреб, яких ви не мали. Можливо, зрештою, найкомфортнішою програмою саме для вас стане Obsidian, але це буде чітке та кайфове рішення, яке закриватиме необхідні потреби.<\/p>\n<p>Найцікавіше, що це стосується не тільки блокнотів, але і софта для todo-списків. Я мав ті ж самі проблеми, що описав. В якийсь момент був модним GTD і я намагався максимально інтегрувати його у своє життя. Правда потім дивувався чому система не працює, а насправді вона просто не була потрібна мені. Я міг обійтись звичайним текстовим файлом, але піддався хайпу і пробував натягнути сову на глобус.<\/p>\n<p>Як підсумок, бажаю вам знайти ідеальні для вас інструменти, які будуть закривати ваші потреби та допомагатимуть кожного дня.<\/p>\n",
            "date_published": "2023-02-27T18:47:50-04:00",
            "date_modified": "2023-02-27T18:48:21-04:00",
            "tags": [
                "інструменти",
                "огляд"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/notes-27-02-2023.jpg",
            "_date_published_rfc2822": "Mon, 27 Feb 2023 18:47:50 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "274",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/notes-27-02-2023.jpg"
                ]
            }
        },
        {
            "id": "268",
            "url": "https:\/\/stefaniuk.website\/all\/kindle\/",
            "title": "Kindle",
            "content_html": "<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/amazon-kindle-review-1.jpeg\" width=\"1240\" height=\"1240\" alt=\"\" \/>\n<\/div>\n<div><p>Недавно у меня был День Рождения и друзья подарили электронную книгу Amazon Kindle Paperwhite. До этого я уже пробовал использовать читалку, но впечатления были смешанными. Самым неприятным были размеры книги, когда больший корпус, но экран занимает всего половину плоскости, а в некоторых книгах еще и полноценная клавиатура была.<\/p>\n<p>В большинстве случаев читаю книги на телефона, технические — на компьютере. Киндл позволил отлипнуть от телефона и без отвлечений читать. Это хорошо вписывается в мои текущие настроения по уменьшению потребляемой информации, но это отдельная история.<\/p>\n<p>Что мне понравилось в Kindle? Небольшой размер, думал купить большую читалку, но понял что маленький размер намного оптимальнее. Ее удобно держать одной рукой и при этом она не устаёт. Также она помещается в карманы куртки или в бананке.<\/p>\n<p>Подсветка, спасает в темное время суток. Тут Амазон постарался и сделал качественно, минимальная яркость не выжигает глаза ночью, как в некоторых других ридерах.<\/p>\n<p>Минусы. Заметил только один — собственный формат mobi. Если покупать книги онлайн, то проблемы с форматами не будет, почти все магазины позволяют скачать книгу в любом удобном формате. Если же качать книги с других сайтов, то могут быть проблемы, потому что не все есть в формате mobi.<\/p>\n<p>На днях амазон анонсировал что будет уходить от mobi в сторону epub, но я пока не пробовал как оно работает. Обновление еще не пришло.<\/p>\n<p>В общем электронная книга это крутая альтернатива тупежу в телефон. С ней реально хочется больше читать.<\/p>\n",
            "date_published": "2022-05-15T07:51:32-04:00",
            "date_modified": "2022-06-13T15:23:46-04:00",
            "tags": [
                "інструменти",
                "книги",
                "огляд"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/amazon-kindle-review-1.jpeg",
            "_date_published_rfc2822": "Sun, 15 May 2022 07:51:32 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "268",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/amazon-kindle-review-1.jpeg"
                ]
            }
        },
        {
            "id": "263",
            "url": "https:\/\/stefaniuk.website\/all\/electronic-music\/",
            "title": "Электронная музыка",
            "content_html": "<p>В этом году получилось осуществить своё давнее желание — научиться писать электронную музыку.<\/p>\n<p>Эта история началась в школьные годы, тогда я очень любил смотреть видео как люди делают музыку. Тогда же я познакомился с FL Studio. Скачал, открыл и непонимающе смотрел на все это. После начал читать какие-то гайды, но все свелось к тому что я просто сидел во всяких синтезаторах, крутил случайные лучки и слушал, что получается. Приблизительно в тоже время я познакомился с программированием, и оно затянуло меня по полной.<\/p>\n<p>Потом я поступил в лицей, где познакомился с моим хорошим другом. Он тоже любил электронную музыку и также интересовался как ее делают. Часто смотрели всякие видосы о музыке, особенно доставляли те на которых ребята играют на «железках». Особенно удивил Launchpad от Novation.<\/p>\n<p>Потом был универ, там я уже по полной влился в программирование, но желание делать музыку не покидало. Так что я как-то раз скачал Ableton и пробовал в нем что-то делать, но все равно далеко я не продвинулся.<\/p>\n<p>В начале этого года я чисто случайно наткнулся на рекламу <a href=\"https:\/\/module.live\">школы электронной музыки<\/a> в инстаграме. Сразу зацепило то, что занятия проходят в офлайне. Особенно после года удалённой работы сильно хотелось пообщаться с новыми людьми вживую. Также заинтересовали преподаватели, они достаточно известные ребята на украинской электронной сцене. Несколько раз даже был у них на выступлениях. Ну и последним интересным для меня пунктом стало живое выступление в конце курса на выпускной вечеринке.<\/p>\n<div style=\"\"><div class=\"category-block\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/music-hobbie-school-1.jpg\" width=\"1920\" height=\"2560\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Помещение школы<\/div>\n<\/div>\n<\/div><div class=\"category-block\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/music-hobbie-school-2.jpeg\" width=\"960\" height=\"1280\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Учебный класс, на столе у каждого есть Ableton Push 2<\/div>\n<\/div>\n<\/div><\/div><p>Летом увидел, что школа также проводит публичные джемы, на которых ученики и другие ребята играют совместно музыку. Сходил, послушал, очень проникся атмосферой и уже на 90% был готов записаться, осталось только выбрать когда. Потом сходил на ещё один джем, после которого уже точно решил, что буду у них учиться.<\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1400\" data-ratio=\"1.5086206896552\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/music-hobbie-jam-1.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<img src=\"https:\/\/stefaniuk.website\/pictures\/music-hobbie-jam-2.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<img src=\"https:\/\/stefaniuk.website\/pictures\/music-hobbie-jam-3.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<\/div>\n<\/div>\n<\/div><p>В августе начался курс, длился полтора месяца, 18 занятий три раза в неделю. По воскресеньям после занятий был коворкинг на котором можно поработать над своим музлом и посоветоваться с преподавателями.<\/p>\n<p>Учеба была очень плотной и насыщенной в плане информации. Все обучение происходило в Ableton, основы которого рассказывают в самом начале. Были занятия по базовой теории музыки, истории электронной музыки, синтезу звука и ударным. Также было много лекций по работе с семплами, на одной из которых делали трек из одного семпла.<\/p>\n<p>Еще одной приятной фишкой стало большое комьюнити. После окончания курсов тебя добавляют в чатик в телеге, где есть все выпускники и преподаватели. Можно общаться на разные темы, собираться и делать что-то вместе. Школа регулярно проводит джемы участие в которых бесплатно.<\/p>\n<h2>Первое выступление<\/h2>\n<p>В конце курса меня ждало выступление на выпускном. Это оказался самый сложный этап для меня, потому что нужно было написать хотя бы 30 минут материала.<\/p>\n<div style=\"max-width: 400px;\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/music-hobbie-poster.jpeg\" width=\"1024\" height=\"1280\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Постер выступления<\/div>\n<\/div>\n<\/div><p>Вначале не мог никак определиться с жанром, в котором буду писать. Начал с техно, не то чтобы часто его слушаю, так что фантазии не хватило написать что-то вменяемое. В итоге где-то две недели я просто ничего не делал и думал, что же написать. В какой-то момент чисто случайно вспомнил про один из любимых жанром: drum & bass.<\/p>\n<p>В итоге получилось написать восемь треков в стиле драм энд бейс и джангл. Прогнав репетицию получил 40 минут выступления.<\/p>\n<p>Стоит немного отойти в сторону и рассказать о живых выступлениях и dj сетах. Обычно живое выступление подразумевает, что музыкант играет свою музыку, часть партий которых играет автоматически, а часть исполняется вживую. Зачастую используют всякие железные синтезаторы, также есть полностью «железные» выступления, в которых не используется компьютер.<\/p>\n<p>DJ сет состоит из готовых треков, которые музыкант выбирает перед выступлением и там бывает не только собственная музыка. Задача артиста сводить треки во время выступления чтобы все звучало плавно и гармонично.<\/p>\n<p>Итог моего обучения можно послушать на саундклауде в виде записи моего выступления:<\/p>\n<div style=\"max-width: 750px;\"><iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" allow=\"autoplay\" src=\"https:\/\/w.soundcloud.com\/player\/?url=https%3A\/\/api.soundcloud.com\/tracks\/1174254646&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true\"><\/iframe>\n<div style=\"font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;\"><p><a href=\"https:\/\/soundcloud.com\/stefaniuk\" title=\"STEFANIUK\" target=\"_blank\" style=\"color: #cccccc; text-decoration: none;\">STEFANIUK<\/a> · <a href=\"https:\/\/soundcloud.com\/stefaniuk\/module-exchange-graducation-live-set\" title=\"Module Exchange - Graducation Live Set\" target=\"_blank\" style=\"color: #cccccc; text-decoration: none;\">Module Exchange — Graducation Live Set<\/a><\/p>\n<\/div><\/div><h2>Железо<\/h2>\n<p>Параллельно с учебой я также увлекся музыкальным оборудованием: разными драм машинами, синтезаторами, педалями и прочим. В какой-то момент показалось, что мне нужно железо, чтобы моя музыка стала крутой и начала всем нравиться. Забегая на перед, скажу, что это заблуждение.<\/p>\n<p>В общем, решил начать с малого и купить себе какой-то небольшой синт, в итоге остановился на Korg Volca Bass и не успел моргнуть, как скупил почти всю линейку Volca. И тут я понял, что сделал ошибку. Во-первых, за стоимость этих четырёх коробочек я мог взять один нормальный хороший синтезатор. Во-вторых, на изучение всего этого зоопарка просто не хватало времени и желания. Да и позже оказалось, что они мне не сильно нравятся, потому что неудобные.<\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/music-hobbie-setup-1.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<\/div>\n<\/div><p>Хорошо что я покупал их б\/у и продал по той же цене, что и покупал. Решил приобрести одно устройство, над которым можно сконцентрироваться и хорошо изучить. Остановился на коробочках от Elektron. Меня подцепил красивый дизайн, удобство и мощный сэквенсор.<\/p>\n<p>Купил FM синтезатор Elektron Model:Cycles и потом докупил еще Model:Samples. Получился достаточно сбалансированный сэтап, с ним я понял, что хочу делать. Но оказалось, что Model:Cycles не сильно подходит под мои задачи, а вот samples напротив очень понравился.<\/p>\n<p>Вообще, история с железом очень сложная, особенно когда ты начинающий. Возникают мысли, что чтобы написать крутой трек обязательно нужно иметь крутой аналоговый синт и прочие примочки. Но главное это скилл, потому что он позволит даже с самого простого синта выжать крутой звук. Да и софтверных синтов хватает с головой.<\/p>\n<p>На эту тему есть просто шикарнейший доклад Максима Ильяхова — <a href=\"https:\/\/www.youtube.com\/watch?v=_Uv5lS7UM9Y\">о демонах начинающих музыкантов и аналоговых синтах<\/a>. После него я более спокойно стал относиться к железкам и сейчас они играют роль крутых игрушек для взрослых, с которыми приятно поиграть после работы или просто когда хочется отдохнуть от компьютера. Буду ли я покупать себе железо? Скорее всего, да. Если покупать б\/у то можно неплохо сэкономить и потом продать за те же деньги. Оно не сделает меня крутым музыкантом, я просто люблю железо.<\/p>\n<h2>Семплы<\/h2>\n<p>Вторая проблема, с которой я столкнулся это гигабайты семплов, которые я накачал из интернета. В какой-то момент у меня было около 1000 бочек. И вместо того чтобы писать музыку ты бесконечно сидишь и выбираешь нужный звук, за это время идея уходит, ты устаешь и забиваешь на это дело.<\/p>\n<p>Однажды я просто взял и отфильтровал все семплы, после чего большую часть выкинул. И хочу проделать это еще раз. Это позволило не заморачиваться над конкретным звуком, а просто наслаждаться процессом. Да и когда уже есть какой-то набросок то найти более подходящие звуки намного проще.<\/p>\n<p>Так что ограничения рулят. Об этом Сергей Король написал отличный пост: <a href=\"https:\/\/sergeykorol.ru\/blog\/self-limitations\/\">Самоограничения<\/a><\/p>\n<h2>Интересные доклады<\/h2>\n<p>Ну и напоследок поделюсь несколькими видео, которые мне очень сильно понравились и помогли в написании музыки:<\/p>\n<ul>\n<li>«<a href=\"https:\/\/www.youtube.com\/watch?v=SmOGXzG_c8I\">Как придумывать музыку<\/a>» от Глеба Raumskaya<\/li>\n<li>«<a href=\"https:\/\/www.youtube.com\/watch?v=7NRCA5aT0sw&t=1582s\">Как записать альбом<\/a>» от Сергея Бурухина<\/li>\n<\/ul>\n<style>\r\n\t.category-block { width: 49%;  display: inline-block; vertical-align: top; margin-right: 1%; margin-bottom: 20px;}\r\n@media (max-width: 900px) {\r\n\t.category-block { width: 100%; margin-right: unset;}\r\n}\r\n<\/style>\n",
            "date_published": "2021-12-26T18:15:18-04:00",
            "date_modified": "2023-06-02T20:12:08-04:00",
            "tags": [
                "інструменти",
                "курси",
                "музика",
                "хоббі"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/music-hobbie-school-1.jpg",
            "_date_published_rfc2822": "Sun, 26 Dec 2021 18:15:18 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "263",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "system\/library\/jquery\/jquery.js",
                    "system\/library\/fotorama\/fotorama.css",
                    "system\/library\/fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/music-hobbie-school-1.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/music-hobbie-school-2.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/music-hobbie-jam-1.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/music-hobbie-jam-2.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/music-hobbie-jam-3.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/music-hobbie-poster.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/music-hobbie-setup-1.jpeg"
                ]
            }
        },
        {
            "id": "262",
            "url": "https:\/\/stefaniuk.website\/all\/app-manuals-by-wordpress-and-identityserver\/",
            "title": "Онлайн документация на базе WordPress и IdentityServer",
            "content_html": "<p>Как-то раз на работе появилась задача по созданию онлайн документации для нашего приложения. Документация должна быть не технической, а в виде мануалов для пользователей.<\/p>\n<p>Одним из главных требований была авторизация пользователей с помощью текущего логина и пароля от основного приложения. Доступ к материалам должен определяться на основании текущих ролей пользователя.<\/p>\n<p>Изначально хотели использовать готовое решение в виде SaaS сервиса с которым можно интегрироваться и спокойно пользоваться. Идея самим все написать с нуля хоть и возникала, но вернуться к ней решили только в крайнем случае.<\/p>\n<p>Первым кандидатом был GitBook. У него приятный интерфейс, много опций по редактированию и оформлению текстов. Необходимый нам функционал также был, но доступен только в Enterprise версии. Цена оказалась слишком большой, пришлось искать дальше.<\/p>\n<p>Подобных сервисов и так не очень много, а с необходимыми нам фичами так вообще почти нету. В какой-то момент я даже решил попробовать что-то собрать на основе статического генератора сайтов, но получилось слишком монструозно.<\/p>\n<p><b>Wordpress<\/b><\/p>\n<p>Оставался только один вариант — написать все самим, чего очень не хотелось делать. В какой-то момент я чисто случайно вспомнил про Wordpress. Не то что бы я им раньше пользовался, но много слышал о нем.<\/p>\n<p>В итоге решили делать мануалы на базе Wordpress. Вообще, Wordpress это такая штука, с которой при должном умении можно слепить все что угодно. В нашем случае даже код не пришлось писать (почти).<\/p>\n<p>За основу взяли готовую тему и немного допилили под наши нужды с помощью CSS. Правда в одном месте пришлось немного изменить логику отображения с помощью PHP, но это была достаточно тривиальная задача.<\/p>\n<p>Весь функционал реализовали с помощью пачки плагинов. Главным среди них стал OAuth Single Sign On by miniOrange. Он позволяет логиниться в вордпесс с помощью сторонних сервисов (Google, Facebook и т. д.). Бесплатная версия покрывает почти все кейсы. На же пришлось покупать лицензию, потому что нужен был мапинг наших ролей на роли вордпреса.<\/p>\n<p>За работу с пользователями в нашем приложении отвечает IdentityServer. Сделали отдельную страницу логина для SSO чтобы получить нужную куку. Также включили флаг AlwaysIncludeUserClaimsInIdToken в настройках клиента, чтобы клеймы ролей были в ID токене и их смог увидеть Wordpress.<\/p>\n<p><b>Хостинг<\/b><\/p>\n<p>С хостингом тоже все оказалось достаточно просто. Изначально хотели использовать AWS Lightsail, но основная проблема мы в отсутствии возможности перемещать снапшоты диска между аккаунтами. В итоге развернули все на EC2 с помощью готового бесплатного решения из AWS Marketplace.<\/p>\n<p><b>Итого<\/b><\/p>\n<p>Эта задача очень показательна, она позволяет понять насколько готовые решения позволяют сэкономить время и деньги. Если писать такое приложение с нуля, то это может занять месяц работы, а также время на тестирование и отлов типичных ошибок. Ну и пользователей нужно было бы учить как всем этим пользоваться.<\/p>\n<p>В нашем случае настройка Wordpress заняла приблезительно неделю не очень активной работы. Также популярность Wordpress позволяет легко нанять человека, который сможет спокойно с ним работать.<\/p>\n<p>Ну и стоимость порадовала. Все это обошлось в ~570$, в то время как типичный SaaS сервис берез 5$ в месяц за одного пользователя. Хостинг тоже вышел не очень дорогим (~10-15$ в месяц).<\/p>\n",
            "date_published": "2021-12-22T03:55:03-04:00",
            "date_modified": "2023-06-02T20:04:57-04:00",
            "tags": [
                "інструменти",
                "дешево і сердито",
                "робота"
            ],
            "_date_published_rfc2822": "Wed, 22 Dec 2021 03:55:03 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "262",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "261",
            "url": "https:\/\/stefaniuk.website\/all\/where-and-how-to-host-apps\/",
            "title": "Где захостить свое приложение?",
            "content_html": "<p>Как и многие другие разработчики я часто делаю разные небольшие приложения или пет-проекты. И очень часто возникает вопрос: где захостить приложение и его компоненты и как это сделать максимально дешево?<\/p>\n<p>Я старался подобрать сервисы, которые позволяют максимально просто и дешёво запускать все необходимые для работы приложения ресурсы. В основном большинство приложений состоит из бекенда (в моем случае .NET), фронтенда и базы данных. Поэтому рассмотрим варианты развертывания каждого компонента.<\/p>\n<h2>Типы сервисов<\/h2>\n<p>Для начала стоит кратко пройтись по моделям предоставления сервисов в облаке. Эти модели описывают зоны ответственности пользователя и облачного провайдера. В разрезе данной статьи нас интересуют следующие модели:<\/p>\n<ul>\n<li><b>IaaS (Infrastructure as a Service)<\/b> — облачный провайдер предоставляет минимально необходимую инфраструктуру в виде виртуальных машин, сети и хранилища, а также отвечает за работоспособность. Дальнейшая настройка, в том числе и ОС, лежит на стороне пользователя. По сути это основные строительные блоки в облаке с помощью которых можно сделать все что захотим.<\/li>\n<li><b>PaaS (Platform as a Service)<\/b> представляет из себя готовую инфраструктуру для разработки и запуска приложений. При такой модели мы не думаем про настройку и управление серверами, операционными системами и т. д. Примером такого сервиса являются управляемые БД (managed databases). Облачный провайдер сам отвечает за правильную настройку сервера, ОС, сохранность данных, бекапах и бесперебойную работу. В основном пользователь только платит деньги и пользуется сервисом.<\/li>\n<li><b>Serverless<\/b>, самая свежая модель, которая очень похожа на PaaS. Только при такой модели облако само выделяет ресурсы на основании текущей нагрузки. Все настройки и планирование ресурсов скрыто от пользователя. Ему остается только загрузить свой код, а все остальное сделает облако. Также в serverless мире обычно оперируют понятием <i>облачная функция<\/i> это код, который умеет обрабатывать только одни конкретный запрос.<\/li>\n<\/ul>\n<div style=\"max-width: 750px\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/host-apps-cloud-models.png\" width=\"1694\" height=\"1162\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Наглядный пример зон ответственности в разных моделях предоставления сервисов.<\/div>\n<\/div>\n<\/div><h2>Где захостить .NET бекенд?<\/h2>\n<p><b>AWS\/Azure\/GCP<\/b><\/p>\n<p>Три самых крупных облачных провайдера, очень похожи между собой и предоставляют во многом одни и те же сервисы. Так в каждом из них можно арендовать виртуальные машины, создать управляемую БД или работать с облачными функциями. Мне больше всего нравиться AWS, но для .NET приложения Azure будет более интересным, потому что это родная для дотнета среда.<\/p>\n<p>Больше всего нас интересую сервисы:<\/p>\n<ul>\n<li><b>AWS EC2 (IaaS)<\/b> обычные виртуальные машины. Есть маркетплейс на котором можно найти огромное множество готовых AMI образов с предустановленным софтом и нужными настройками. Например можно в один клик развернуть виртуалку с Wordpress и всем необходимым.<\/li>\n<li><b>Azure App Service (PaaS)<\/b> самый простой и нативный способ захостить .NET приложения. App Service сам разворачивает приложение из репозитория, настраивает все необходимое для работы и предоставляет полезные метрики.<\/li>\n<li><b>AWS Lightsail (IaaS\/PaaS)<\/b> упрощенная версия AWS для тех кто с ним не знаком. Можно очень дешево арендовать виртуальную машину, поднять докер контейнер, развернуть БД и хранилище для файлов. Все это делается буквально в пару кликов мышкой. Первые три месяца бесплатные.<\/li>\n<li><b>AWS Elastic Beanstalk (PaaS)<\/b> умеет поднимать необходимые для работы приложения компоненты в AWS. По сути мы можем все это сделать руками, но Beanstalk автоматизирует всю рутину. Под капотом он представляет из себя набор разных CloudFormation скриптов, которые поднимают необходимые сервисы и настраивают их.<\/li>\n<\/ul>\n<p><b>DigitalOcean<\/b><\/p>\n<p>Самый простой в использовании сервис. Раньше в DO можно было арендовать только виртуальные машины, сейчас же можно создавать управляемы БД, балансировщики и т. д. На текущий момент почти все мои проекты крутяться в DigitalOcean.<\/p>\n<p>Нам интересны следующие сервисы:<\/p>\n<ul>\n<li><b>Droplets<\/b> — виртуальная машина, есть много готовых образов на маркетплейсе под любой рантайм.<\/li>\n<li><b>App Platform<\/b> — позволяет нативно запускать  приложения написанные на Python, Nodejs, Go, php или любое другое приложение в виде контейнера.<\/li>\n<\/ul>\n<p><b>Heroku<\/b><\/p>\n<p>Честно говоря я им ни разу не пользовался, но друзья очень часто советуют. Из коробки не поддерживает .NET приложения, но вроде как есть кастомные билд паки. В основном хероку позволяет развернуть приложения на Nodejs, Go, Python и т. д. Из приятных фишек: достаточно запушить код в репозиторий, все остальное сделает Heroku.<\/p>\n<p>Есть бесплатный тариф, в нем приложение останавливается после пол часа без активности. Так что первые запросы к приложению могут отрабатывать немного дольше.<\/p>\n<div style=\"max-width: 750px\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/host-apps-backend.png\" width=\"1538\" height=\"512\" alt=\"\" \/>\n<\/div>\n<\/div><h2>Где захостить фронтенд?<\/h2>\n<p>С фронтендом дела обстоят намного проще, есть огромное количество сервисов, которые позволяют бесплатно захостить фронт.<\/p>\n<p>Мой личный фаворит — Vercel. Бесплатный план включает такие фишки как HTTPS, автоматически деплой с репозитория, собственный домен. Также он умеет разворачивать приложение под каждый PR, что позволяет протестировать изменения до того как влить код в основную ветку.<\/p>\n<p>Самым же популярным сервисом является Github Pages. В нем очень просто поднять статический сайт прямо из репозитория. Бесплатный и работает сразу из коробки. В основном используется для хостинга документации к коду, блогов или резюме.<\/p>\n<p>App Platform от Digital Ocean я уже упоминал выше. Можно поднять три статических сайта бесплатно, последующие за 3$ в месяц. Есть автоматический деплой, бесплатный HTTPS, возможность подключения своего домена. Сейчас в нем крутиться мое онлайн резюме. Сервис прикольный тем что в нем можно запустить и бек и фронт.<\/p>\n<p>Последним хочу отметить AWS S3. По сути это объектное хранилище (хранилище для файлов) в котором есть встроенная поддержка сайтов. Для этого нужно загрузить HTML\/CSS\/JS файлы и включить соответствующую опцию в настройках бакета. Часто встречает в продакшене связку CloudFront + S3.<\/p>\n<div style=\"max-width: 750px\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/host-apps-frontend.png\" width=\"1524\" height=\"298\" alt=\"\" \/>\n<\/div>\n<\/div><h2>Где развернуть базу данных?<\/h2>\n<p>С базами данных ситуация сложнее, в основном предлагают развернуть БД за большие деньги. Такой вариант не подходит если мы хотим захостить небольшое приложение или просто его потестировать без установки БД локально. Вот несколько из вариантов:<\/p>\n<ul>\n<li>ElephantSQL, можно развернуть PostreSQL базу данных любого размера. Бесплатный план дает базу с 20 Мб и 5 параллельными подключениями.<\/li>\n<li>Mongo Atlas подойдет если нужно развернуть кластер MongoDB. Есть достаточно жирный бесплатный план.<\/li>\n<li>В DigitalOcean и AWS Lightsail начиная с 15 долларов в месяц можно развернуть достаточно неплохой сервер БД, который не нужно настраивать и работает из коробки. В Lightsail первые 3 месяца бесплатно.<\/li>\n<\/ul>\n<div style=\"max-width: 750px\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/host-apps-databases.png\" width=\"1570\" height=\"288\" alt=\"\" \/>\n<\/div>\n<\/div><h2>Полезные ссылки<\/h2>\n<ul>\n<li><a href=\"https:\/\/oblako.kz\/iaas-blog\/samye-populjarnye-oblachnye-servisy-v-mire\">Виды облачных ресурсов<\/a><\/li>\n<li><a href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/HostingWebsiteOnS3Setup.html\">Хостинг веб сайта в AWS S3<\/a><\/li>\n<li><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04\">Отличный туториал по тому как настроить SSL сертификат на Ubuntu<\/a><\/li>\n<\/ul>\n",
            "date_published": "2021-12-15T04:34:45-04:00",
            "date_modified": "2023-06-02T20:06:05-04:00",
            "tags": [
                "cloud",
                "google cloud platform",
                "інструменти",
                "дешево і сердито"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/host-apps-cloud-models.png",
            "_date_published_rfc2822": "Wed, 15 Dec 2021 04:34:45 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "261",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/host-apps-cloud-models.png",
                    "https:\/\/stefaniuk.website\/pictures\/host-apps-backend.png",
                    "https:\/\/stefaniuk.website\/pictures\/host-apps-frontend.png",
                    "https:\/\/stefaniuk.website\/pictures\/host-apps-databases.png"
                ]
            }
        },
        {
            "id": "259",
            "url": "https:\/\/stefaniuk.website\/all\/web-analytics-with-aws-lambda\/",
            "title": "Веб аналитика на коленке с помощью AWS",
            "content_html": "<p>Время от времени нам с друзьями приходят идеи различных проектов, которые было бы круто запустить. Но чтобы убедиться в жизнеспособности идеи нужно ее как-то проверить. Обычно для этого создаётся лендинг, на который нагоняется трафик и потом в аналитике смотрим, как ведут себя пользователи.<\/p>\n<p>В один из таких дней мы решили проверить очередную идею. Но в этот раз пользователь мог сделать много разных действий на сайте и их нужно было как-то отследить и проанализировать.<\/p>\n<p>Это не какая-то уникальная проблема, обычно для таких задач берут Google Tag Manager. Но никто из нас не умел им пользоваться да и желания изучать особо не было.<\/p>\n<p>И тут внезапно пришла идея как это сделать. Можно взять AWS Lambda, набросать на коленке пару строк кода, которые будут получать событие и куда-то их складывать  для дальнейшего анализа. Для места хранения метрик выбрал CloudWatch. Он как раз умеет анализировать разные метрики\/логи и строить красивые дашборды.<\/p>\n<p>Также хотелось получать письма на почту с информацией про самые важные события. Для этого взяли SNS.<\/p>\n<p>В итоге пользователь заходит на сайт, делает какое-то действие, оно летит в лямбду, которая просто кладет информацию в логи и отправляет сообщение в SNS. Дальше идем в CloudWatch и смотрим на дашборды и анализируем полученную информацию.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/New-screenshot.png\" width=\"2268\" height=\"1488\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Актуальная аналитика<\/div>\n<\/div>\n<p>В итоге получилась относительно простая и даже гибкая аналитика, которую можно использовать сразу на нескольких проектах. Сейчас она обходиться в 0$, нам хватает одного миллиона бесплатных вызовов лямбды в месяц.<\/p>\n<p>Но я все же советую изучить и использовать готовые инструменты вместо того чтобы сидеть и делать свои велосипеды. Ведь это очень скользкий путь, в какой-то момент можно забыть для чего это делалось и бесконечно улучшать и допиливать, вместо того чтобы решать задачу.<\/p>\n",
            "date_published": "2021-08-04T03:58:43-04:00",
            "date_modified": "2023-06-02T20:07:04-04:00",
            "tags": [
                "cloud",
                "інструменти",
                "дешево і сердито"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/New-screenshot.png",
            "_date_published_rfc2822": "Wed, 04 Aug 2021 03:58:43 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "259",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/New-screenshot.png"
                ]
            }
        },
        {
            "id": "223",
            "url": "https:\/\/stefaniuk.website\/all\/google-drive-onedrive\/",
            "title": "Google Drive → OneDrive",
            "content_html": "<p>Гугл диском пользуюсь на протяжении 4-5 лет. В целом всё устраивало, но вот время от времени появлялись проблемы, которые сильно мешали. Например, синхронизация файлов работала через раз, загружаю файл с телефона, а он только через полчаса появляется на компьютере, иногда нужно руками поменять любой файл через веб интерфейс, чтобы файл появился у меня на компьютере.<\/p>\n<p>За всё время количество файлов возросло в десятки раз. У меня пропала возможность держать файлы локально, пришлось думать, что выкинуть из синхронизации, а что оставить. Хотя слышал, что у других сервисов есть возможность держать все файлы на диске, но они не будут загружены, пока их не откроют, после чего освободят место на диске.<\/p>\n<p>Начал искать замену. Dropbox для меня стал неюзабельным, кроме того, соотношение цены и фич не самое лучшее. В то же время на работе активно использовал корпоративный OneDrive. Решил присмотреть его в качестве облака для файлов.<br \/>\n <br \/>\nВ итоге собрал небольшую сравнительную табличку и по результатам которой решил переехать в OneDrive<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/google-drive-vs-onedrive-3.png\" width=\"631\" height=\"614\" alt=\"\" \/>\n<\/div>\n<p>Из минусов OneDrive можно отметить глючное приложение для mac. Синхронизирует — отлично, но вот интерфейс приложения тупит. Но я его почти никогда не открываю.<\/p>\n<p>С другой стороны, мобильно приложение в OneDrive намного удобнее. Можно посмотреть файлы, которые ты расшарил и которые расширили тебе. Также радует наличие сканера документов прямо в приложении.<\/p>\n<p>Прошло два месяца, OneDrive меня полностью устраивает. От Google Drive полностью не избавился, так как очень много людей его используют, в том числе их документы, да и я сам.<\/p>\n",
            "date_published": "2020-06-16T18:36:17-04:00",
            "date_modified": "2020-06-01T17:14:37-04:00",
            "tags": [
                "інструменти",
                "огляд"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/google-drive-vs-onedrive-3.png",
            "_date_published_rfc2822": "Tue, 16 Jun 2020 18:36:17 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "223",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/google-drive-vs-onedrive-3.png"
                ]
            }
        },
        {
            "id": "217",
            "url": "https:\/\/stefaniuk.website\/all\/semantica-tema-dlya-visual-studio-code\/",
            "title": "Semantica — тема для Visual Studio Code",
            "content_html": "<p>Красивая тема редактора сильно влияет на удобство работы с кодом. Я перепробовал множество разных тем, сначала были тёмные, но спустя какое-то время я перешёл на светлые. Большинство тем меня не устраивали. Для меня важно чтобы: интерфейс не обращал на себя внимания, подсветка кода похожая на то что есть в обычной Visual Studio и Rider.<\/p>\n<p>Однажды наткнулся на отличную тему <a href=\"https:\/\/github.com\/tonsky\/vscode-theme-alabaster\">Alabaster<\/a>. Общая цветовая палитра мне зашла, но вот подсветка синтаксиса слишком минималистичная. В итоге решил на основе этой темы запилить свою. Добавил подсветку синтаксиса похожую на Visual Studio Light и Rider Light. В итоге получилась новая тема — Semantica.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/icon.jpg\" width=\"225\" height=\"225\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Логотип темы.<\/div>\n<\/div>\n<h2>Ссылки<\/h2>\n<p>Исходный код: <a href=\"https:\/\/github.com\/teamkiller7112\/vscode-theme-semantica\">https:\/\/github.com\/teamkiller7112\/vscode-theme-semantica<\/a><br \/>\nМаркетплейс: <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=bogdanstefanjuk.theme-semantica\">https:\/\/marketplace.visualstudio.com\/items?itemName=bogdanstefanjuk.theme-semantica<\/a><\/p>\n<h2>Скриншоты<\/h2>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/csharp.jpg\" width=\"1000\" height=\"610\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/json.jpg\" width=\"1000\" height=\"610\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/xml.jpg\" width=\"1000\" height=\"610\" alt=\"\" \/>\n<\/div>\n<h2>PS<\/h2>\n<p>Замечания или пожелания оставляйте на <a href=\"https:\/\/github.com\/teamkiller7112\/vscode-theme-semantica\/issues\">гитхабе<\/a>. Если тема понравилась — поставьте звездочку в <a href=\"https:\/\/github.com\/teamkiller7112\/vscode-theme-semantica\">репозитории<\/a>. <\/p>\n<p>В качестве шрифта советую использовать <a href=\"https:\/\/www.jetbrains.com\/ru-ru\/lp\/mono\/\">JetBrains Mono<\/a>.<\/p>\n",
            "date_published": "2020-04-25T09:16:49-04:00",
            "date_modified": "2020-04-25T10:10:30-04:00",
            "tags": [
                "інструменти",
                "програмування",
                "проекти"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/icon.jpg",
            "_date_published_rfc2822": "Sat, 25 Apr 2020 09:16:49 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "217",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/icon.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/csharp.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/json.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/xml.jpg"
                ]
            }
        },
        {
            "id": "211",
            "url": "https:\/\/stefaniuk.website\/all\/my-desktop\/",
            "title": "Мій робочий та домашній сетап",
            "content_html": "<p><b>2023<\/b><br \/>\nЗ початком війни в мене виникла необхідність в мобільному робочому місці, тому мій робочий сетап зараз виглядає ось так:<\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1400\" data-ratio=\"1.3333333333333\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-1.jpeg\" width=\"1400\" height=\"1050\" alt=\"\" \/>\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-2.jpeg\" width=\"1400\" height=\"1867\" alt=\"\" \/>\n<\/div>\n<\/div>\n<\/div><p>Ноутбук та звичайний блокнот з ручкою дозволяють організувати робоче місце в будь-якому місці та в будь-яких умовах. По факту, можна обійтися навіть без столу. Попрацювавши так місяць я усвідомив, що цього цілком достатньо для ефективної роботи. А якщо використовувати робочі столи в mac os, то можна відмовитись і від моніторів.<\/p>\n<h2>Мої попередні сетапи<\/h2>\n<p><b>2020<\/b><\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1400\" data-ratio=\"1.5086206896552\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-3.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<img src=\"https:\/\/stefaniuk.website\/pictures\/my-desk-1.jpg\" width=\"1000\" height=\"750\" alt=\"\" \/>\n<\/div>\n<\/div>\n<\/div><p>З переїздом на нову орендовану квартиру, потрібно було організовувати собі нормальне робоче місце, бо якраз вдарив ковід та карантин і я перейшов на віддалену роботу.<\/p>\n<p>Почав з вибору столу. Спочатку хотів стіл з можливістю регулювати висоту, але він коштував як крило боїнга і я зажав грошей. Купив простий, дешевий, проте великий стіл на розетці десь за 2500 грн. На ньому було зручно одночасно працювати за ноутом, вести нотатки в блокноті та робити щось руками.<\/p>\n<p>Настала черга вибору монітора. Через обмежений бюджет вибрав Dell P2419HC на 24 дюйми. Головним критерієм була підтримка power delivery через type-c, щоб заряджати ноут та виводити картинку через один кабель. Хоча згодом стало зрозуміло, що 1080 для такої діагоналі занадто ріже очі.<\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/my-keyboard-and-mouse.jpg\" width=\"1000\" height=\"750\" alt=\"\" \/>\n<\/div>\n<\/div><p>В той час, окрім свого ноутбука, був і робочий ноут. Щоб зробити безшовне перемикання між ними я придбав клавіатуру Logitech K380 та <a href=\"https:\/\/stefaniuk.website\/all\/logitech-m590\/\">мишку<\/a>, які мають підтримку декількох пристроїв. Завдяки всього трьом кнопкам можна було перемикатися між робочим та домашнім сетапом: одна на моніторі, одна на клаві та ще одна на мишці.<\/p>\n<p><b>2021<\/b><\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-4.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<\/div>\n<\/div><p>Перейшов зі звичайного робочого столу на стіл з Ікея з ручним регулюванням висоти. За ціною вийшло вдвічі дешевше ніж аналогічні з електричним приводом. Тож тепер я всім раджу купувати столи з регулюванням, це нереально зручна штука. Завдяки йому я позбавився від болів в спині.<\/p>\n<p>Клавіатуру також поміняв на механічну Keychron K1 яку виграв в ютубі через random org :)<\/p>\n<p>Далі почалося моє хобі з електронною музикою. Так в моєму житті з’явився новий етап покупок різного музичного заліза.<\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-5.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<\/div>\n<\/div><p>Першою покупкою стали монітори Kali LP-6. Досить непогані колонки, правда коли на них не подаєш сигнал, то йде дуже тихенький шум, але до цього швидко звикаєш і перестаєш його чути.<\/p>\n<p>Потім добавились різні синтезатори:<\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1400\" data-ratio=\"1.5086206896552\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-6.jpeg\" width=\"1400\" height=\"928\" alt=\"\" \/>\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-7.jpeg\" width=\"1400\" height=\"2490\" alt=\"\" \/>\n<\/div>\n<\/div>\n<\/div><p><b>2022<\/b><br \/>\nЗ’явився новий основний 2К монітор Dell на 27 дюймів. Старий вирішив використати як другий вертикальний монітор. Досить зручний сетап, якщо винести туди всі месенджери та пошту.<\/p>\n<div style=\"max-width: 720px;\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/work-place-2023-8.jpeg\" width=\"1400\" height=\"907\" alt=\"\" \/>\n<\/div>\n<\/div><p>Також в мене з’явилась PlayStation 4 яку видно на фоні за монітором. Згодом я замінив її на Xbox Series S. Але потім прийшла війна…<\/p>\n",
            "date_published": "2020-04-08T05:17:40-04:00",
            "date_modified": "2023-03-31T19:49:43-04:00",
            "tags": [
                "інструменти"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/my-main-monitor.png",
            "_date_published_rfc2822": "Wed, 08 Apr 2020 05:17:40 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "211",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/jquery\/jquery.js",
                    "system\/library\/fotorama\/fotorama.css",
                    "system\/library\/fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/my-main-monitor.png",
                    "https:\/\/stefaniuk.website\/pictures\/dxracer.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-1.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-2.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-3.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/my-desk-1.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/my-keyboard-and-mouse.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-4.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-5.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-6.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-7.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/work-place-2023-8.jpeg"
                ]
            }
        },
        {
            "id": "113",
            "url": "https:\/\/stefaniuk.website\/all\/logitech-m590\/",
            "title": "Logitech M590 или лучшая мышка для mac",
            "content_html": "<p>Больше полугода я активно использую эту мышку со своим личным ноутбуком и рабочей машиной. Главными критериями при выборе были:<\/p>\n<ul>\n<li>Возможность работы с macOS через bluetooth без вспомогательных донглов.<\/li>\n<li>Полноценная поддержка macOS так много мышек вели себя неадекватно.<\/li>\n<\/ul>\n<p>Остановился я на Logitech M590.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/wireless-mouse-m590-multi-device-silent.png\" width=\"500\" height=\"429\" alt=\"\" \/>\n<\/div>\n<p><b>Из особенностей что мне понравились<\/b><\/p>\n<ol start=\"1\">\n<li>Работа с 2 компьютерами. MacBook по Bluetooth, а с фрабочим компом на винде через донгл.<\/li>\n<li>Настройка дополнительных кнопок. И тут есть один очень крутой момент. ПО от logitech позволяет очень гибко настроить под себя мышку. В том числе на ней можно воспроизводить всем знакомые жесты macOS.<\/li>\n<\/ol>\n<p>Для себя я настроил 2 режима<\/p>\n<ul>\n<li>Нажатие на колесико вправо или влево — переключает рабочий стол в соответствующую сторону.<\/li>\n<li>Передняя кнопка на левой стороне имитирует касание тачпада трема пальцами. Так зажав эту кнопку и проведя мышку вверх можно открыть Missing Control.<\/li>\n<\/ul>\n<p>Минус один, если взять такую же расцветку как на картинке — то мышь очень быстро пачкается.<\/p>\n",
            "date_published": "2019-08-15T04:06:53-04:00",
            "date_modified": "2019-08-06T17:04:46-04:00",
            "tags": [
                "інструменти",
                "огляд"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/wireless-mouse-m590-multi-device-silent.png",
            "_date_published_rfc2822": "Thu, 15 Aug 2019 04:06:53 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "113",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/wireless-mouse-m590-multi-device-silent.png"
                ]
            }
        },
        {
            "id": "69",
            "url": "https:\/\/stefaniuk.website\/all\/vscode-with-dotnet\/",
            "title": "Разработка на C# с помощью Visual Studio Code",
            "content_html": "<p>Пару недель назад решил перейти на VS Code в качестве основной IDE для .NET приложений. Составил список плагинов, которые использую каждый день.<\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.csharp\">C#<\/a><\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=fernandoescolar.vscode-solution-explorer\">vscode-solution-explorer<\/a> — позволяет работать с файлами .sln. Добавляет для этого дополнительное меню.<\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=VisualStudioExptTeam.vscodeintellicode\">Visual Studio IntelliCode<\/a><\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.PowerShell\">PowerShell<\/a> — отличное расширение, которое полностью заменяет PowerShell ISE.<\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=eamodio.gitlens\">GitLens — Git supercharged<\/a><\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=streetsidesoftware.code-spell-checker\">Code Spell Checker<\/a><\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=jchannon.csharpextensions\">C# Extension<\/a><\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=formulahendry.dotnet-test-explorer\">.NET Core Test Explorer<\/a><\/li>\n<li><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=alefragnani.Bookmarks\">Bookmarks<\/a><\/li>\n<\/ol>\n",
            "date_published": "2019-06-06T11:57:55-04:00",
            "date_modified": "2019-06-06T11:57:33-04:00",
            "tags": [
                "dotnet",
                "інструменти",
                "програмування"
            ],
            "_date_published_rfc2822": "Thu, 06 Jun 2019 11:57:55 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "69",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "43",
            "url": "https:\/\/stefaniuk.website\/all\/my-google-chrome-extensions\/",
            "title": "Мои расширения в Google Chrome",
            "content_html": "<p>Решил поделиться расширениями для браузера, которыми пользуюсь каждый день.<\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/marinara-pomodoro%C2%AE-assist\/lojgmehidjdhhbmpjfamhpkpodfcodef?hl=ru\"><b>Marinara: Ассистент Pomodoro<\/b><\/a> — очень прикольный трекер помидорок. Можно смотреть отчеты и графики применения данной техники.<\/li>\n<li><a href=\"https:\/\/www.instapaper.com\/\"><b>Instapaper<\/b><\/a> — быстрое добавление статей в Instapaper.<\/li>\n<li><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/google-translate\/aapbdbdomjkkjkaonfhkkikfgjllcleb?hl=ru\"><b>Google Переводчик<\/b><\/a> — так как читаю большое количество статей на английском языке, то данное расширение часто помогает понять смысл слова не переходя на другую вкладку с переводчиком.<\/li>\n<li><a href=\"https:\/\/feedly.com\/\"><b>Follow this feed by Feedly<\/b><\/a> — ищет на сайте возможность подписаться на обновления с помощью RSS<\/li>\n<li><a href=\"https:\/\/github.com\/gorhill\/uBlock\"><b>uBlock Origin<\/b><\/a> — как по мне самый лучший блокировщик рекламы, который можно заточить под себя. Оставлю здесь ссылку на настройки, которые позволяют убрать надоедливые окна-консультанты на сайтах<\/li>\n<li><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/jsonview\/chklaanhfefbnpoihckbnefhakgolnmc?hl=ru\"><b>JSONview<\/b><\/a> — наверное самое популярное расширение для просмотра JSON в браузере.<\/li>\n<li><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/trelabels-for-trello\/annjdmkbhchmobehkcfilecnlhibedbj?hl=ru\"><b>Trelabels for Trello<\/b><\/a> — красивое отображение тегов на карточках в Trello.<\/li>\n<li><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/onetab\/chphlpgkkbolifaimnlloiipkdnihall?hl=ru\"> <b>OneTab<\/b><\/a> — мега крутое расширение которое я советую поставить прямо сейчас. Оно позволяет закрыть все открытые вкладки и сохранить их URL на одной единственной. Помогает разгрузить браузер и оперативку.<\/li>\n<li><a href=\"https:\/\/github.com\/ovity\/octotree\"><b>Octotree<\/b><\/a> — добавляет на github древовидное представление репозитория, как в IDE.<\/li>\n<\/ol>\n",
            "date_published": "2019-04-04T15:38:08-04:00",
            "date_modified": "2019-04-04T15:37:56-04:00",
            "tags": [
                "інструменти"
            ],
            "_date_published_rfc2822": "Thu, 04 Apr 2019 15:38:08 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "43",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "34",
            "url": "https:\/\/stefaniuk.website\/all\/sublime-merge\/",
            "title": "Sublime Merge",
            "content_html": "<p>В ходе прохождения курса по гиту решил посмотреть какие есть GUI клиенты помимо SourceTree. И нашел sublime merge.<\/p>\n<p>Решил попользоваться им неделю и посмотреть как приживется. Теперь это мой основной клиент после cli.<\/p>\n<p>Что зацепило:<\/p>\n<ol start=\"1\">\n<li>Простой и удобный UI<\/li>\n<li>Можно выполнять команды гита в самом клиенте<\/li>\n<li>Очень удобный поиск, в котором можно писать свои запросы<\/li>\n<\/ol>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1000\" data-ratio=\"1.6393442622951\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/sub-me-1-1.png\" width=\"1000\" height=\"610\" alt=\"\" \/>\n<img src=\"https:\/\/stefaniuk.website\/pictures\/sub-me-2.png\" width=\"1000\" height=\"610\" alt=\"\" \/>\n<\/div>\n<\/div>\n",
            "date_published": "2019-03-25T09:07:52-04:00",
            "date_modified": "2019-03-25T09:07:36-04:00",
            "tags": [
                "інструменти"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/sub-me-1-1.png",
            "_date_published_rfc2822": "Mon, 25 Mar 2019 09:07:52 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "34",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/jquery\/jquery.js",
                    "system\/library\/fotorama\/fotorama.css",
                    "system\/library\/fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/sub-me-1-1.png",
                    "https:\/\/stefaniuk.website\/pictures\/sub-me-2.png"
                ]
            }
        },
        {
            "id": "30",
            "url": "https:\/\/stefaniuk.website\/all\/work-with-cli\/",
            "title": "Конспект: работа с командной строкой",
            "content_html": "<p>Данная статья это конспект по пройденному курсу: <a href=\"https:\/\/ru.hexlet.io\/courses\/cli-basics\">Основы командной строки<\/a>.<\/p>\n<p><b>Обозначения пути<\/b><\/p>\n<ul>\n<li>\/ — самый верхний уровень файловой системы<\/li>\n<li>~ — домашняя директория<\/li>\n<\/ul>\n<p>Сайт на котором можно посмотреть что делает та или иная команда. <a href=\"https:\/\/explainshell.com\/\"> Ссылка<\/a><br \/>\nИформация о стандартных директориях *nix систем. <a href=\"https:\/\/ru.wikipedia.org\/wiki\/FHS\">FHS<\/a><\/p>\n<p><b>Работа в файловой системе<\/b><\/p>\n<ul>\n<li><b>pwd<\/b> — отображает путь рабочей (текущей) директории<\/li>\n<li><b>ls<\/b> — показывает все файлы и директории в текущему или указанному пути<\/li>\n<li><b>cd<\/b> — служит для перемещения по директориям. Если выполнить без параметров — переместит нас в домашнюю директорию.<\/li>\n<li><b>stat<\/b> — показывает дополнительную информацию о папке или файле<\/li>\n<\/ul>\n<h2>Чтение файла<\/h2>\n<ul>\n<li><b>сat<\/b> — Отображает содержимое файла<\/li>\n<li><b>head<\/b> — Отображает первые 10 строк файла, можно вывести больше с помощью флага -n 20<\/li>\n<li><b>tail<\/b> — Отображает последние 10 строк файла, можно вывести больше с помощью флага -n 20<\/li>\n<li><b>less<\/b> — Представляет из себя пейджер. С его помощью можно перемещайся и искать в файле. Также он может открыть файл любого размера, так как отображает только те строки, которые может поместить в окно консоли и при перемещении по файлу — дочитывать нужную информацию.<\/li>\n<\/ul>\n<p>Может быть такая ситуация что файл очень интенсивно изменяется, например логи, и нужно постоянно выводить содержимое файла. Для этого у команд head и tail есть флаг -f. Данный файл сразу выводит на экран добавленные строки.<\/p>\n<h2>Grep<\/h2>\n<p><b>Grep<\/b> — консольная утилита, которая производит поиск в файле или файлах по заданному шаблону.<br \/>\nПример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">grep services Startup.cs  # выведет по очередно строчки, которые содержат services.<\/code><\/pre><p>Иногда нужно посмотреть не только сами строчки содержащие текст, но и текст вокруг.<br \/>\nДля этого есть несколько дополнительных флагов:<\/p>\n<ul>\n<li><b>-B<\/b> — количество строк до искомой строки<\/li>\n<li><b>-A<\/b> — после искомой строки<\/li>\n<li><b>-C<\/b> — до и после одновременно<\/li>\n<li><b>-R<\/b> — рекурсивный поиск по директориям и под директориям<\/li>\n<li><b>-n<\/b> — отобразит номер строки, возле каждого результата поиска<\/li>\n<\/ul>\n<p>Примеры:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">grep -R .getUsers() . - найдет все файлы в которых есть строчка .getUsers(), начиная с текущей.\r\ngrep -C 10 text file.txt - найдет строку text и отобразит ее и 10 соседних строк с каждой стороны<\/code><\/pre><h2>Текстовые редакторы<\/h2>\n<p>Для редактирования файлов в командной строке используют редакторы Nano, Vim и Emacs. Первые два, обычно, установлены по умолчанию.<\/p>\n<p><b>Nano<\/b><br \/>\nСамый простой текстовый редактор. Удобно редактировать небольшие файлы.<\/p>\n<p><b>Vim<\/b><br \/>\nДанный редактор имеет очень много возможностей и особенностей.<br \/>\nРабота в Vim состоит из разных режимов.<br \/>\nКогда только открыли файл, редактор работает в режиме команд. Любое нажатие выполняет какую-то определенную команду.<\/p>\n<p>В Vim есть четыре основных режима работы:<\/p>\n<ol start=\"1\">\n<li>Командный режим (обычный режим) — это режим по умолчанию. Перемещение по файлу, быстрое (при помощи команд, комбинаций клавиш) редактирование, удаление, поиск текста.<\/li>\n<li>Режим вставки (режим ввод) — ввод текста с клавиатуры. То, как вы привыкли это делать в обычных редакторах.<\/li>\n<li>Визуальный режим — выделение произвольных участков текста.<\/li>\n<li>Режим командной строки — собственная командная строка для редактора текста, из которой можно выполнять великое множество разнообразных команд.<\/li>\n<\/ol>\n<p>Для перехода в режим вставки — нажать i.<br \/>\nДля перехода в режим команд — нажать ESC.<\/p>\n<p>Как выйти с Vim? :-)<br \/>\nДля начала нужно перейти в режим команд.<\/p>\n<ul>\n<li>:q! — Закрывает файл без сохранения изменений<\/li>\n<li>:wq — Сохраняет и закрывает файл<\/li>\n<li>:w — Просто сохраняет файл<\/li>\n<\/ul>\n<p>Хороший гайд по Vim — <a href=\"https:\/\/guides.hexlet.io\/vim\/\">https:\/\/guides.hexlet.io\/vim\/<\/a><\/p>\n<h2>Перенаправление потоков<\/h2>\n<p>В *nix системах есть такое понятие как потоки. В начале работы программы ОС связывает ее с тремя потоками: STDIN, STDOUT и STDERR.<br \/>\nДля всех приложений они выглядят как обычные файлы.<br \/>\nЧто же делает каждый из них?<br \/>\n* <b>STDIN<\/b> — отвечает за ввод программы.<br \/>\n* <b>STDOUT<\/b> — отвечает за вывод программы.<br \/>\n* <b>STDERR<\/b> — отвечает за вывод ошибок.<\/p>\n<p>По умолчанию вывод всех команд отображается на экране. Но с мощью параметра <b>><\/b> можно перенаправить вывод в указанный файл.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">ls -l &gt; output.txt<\/code><\/pre><p>На экране ничего не отобразится, но в текущей директории появится файл output со всем выводом команды ls -l. Данную операцию можно сделать с любой программой, которая что-либо выводит на экран. Но есть одна особенность данного оператора, он перезаписывает все данные в файле, для того чтобы дописать используйте <b>>><\/b>.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">echo Hello_World &gt; output.txt\r\n# Hello_World\r\necho Hello_World1 &gt; output.txt\r\n# Hello_World1\r\necho Hello_World2 &gt;&gt; output.txt\r\n# Hello_World1\r\n# Hello_World2<\/code><\/pre><p>Также можно перенаправлять в другую сторону поток. Например у нас есть файл и мы ходим посмотреть сколько в нем строк. Для этого существует команда wc. Она принимает на вход текст, но с помощью оператора < мы можем передать в нее содержимое файла.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">wc -l &lt; result.txt\r\n# 2432<\/code><\/pre><p>Также можно как читать так и писать в файл:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">wc -l &lt; result.txt &gt; output.txt<\/code><\/pre><h2>Пайплайн (Конвейер)<\/h2>\n<p>Если у программы есть вход и выход, то их можно обьеденить, такое обьединение называется — конвейер.<br \/>\nС помощью данного подхода можно передавать данные сквозь приложения, как через цепочку функций.<\/p>\n<p>Например нам нужно найти строку в которой есть несколько слов и нам не важно как они расположены внутри, главное чтобы были на одной строчке.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">grep alias .bashrc | grep color<\/code><\/pre><p>Алгоритм такой команды очень прост:<\/p>\n<ol start=\"1\">\n<li>Выбираем строки, которые содержат alias<\/li>\n<li>Потом в строчках, которые получили на выходе первой команды, ищем слово color<\/li>\n<\/ol>\n<p>| — этот символ называется пайп, он указывает шелу взять STDOUT одного процесса и соединяет его с STDIN другого процесса. <\/p>\n<p>Также команду выше можно переписать на такую:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">cat .bashrc | grep alias | grep color<\/code><\/pre><h2>Манипулирование файловой структурой<\/h2>\n<p>Возможность модифицировать файловую систему завязана на права. Если у вас нету прав создавать файлы в текущей директории, вы получите ошибку.<\/p>\n<p>Команды:<\/p>\n<ol start=\"1\">\n<li><b>touch filename<\/b> — изменяет время последнего доступа к файлу, если его нету — создает<\/li>\n<li><b>rm<\/b> — удалить файл\n<ul>\n  <li><b>-r <\/b> — удаляет папку<\/li>\n  <li><b>-f<\/b> — не спрашивает подтверждение пользователя<\/li>\n<\/ul>\n<\/li>\n<li><b>mv<\/b> — <i>переименовывает файл<\/i>. В *nix системах не существует понятия «переименовать файл». Переименование всегда равносильно перемещению, которое выполняется командой mv.<\/li>\n<li><b>cp<\/b> — копирует файл.\n<ul>\n  <li><b>-r <\/b>— позволяет скопировать директории<\/li>\n<\/ul>\n<\/li>\n<li><b>mkdir<\/b> — создание директории\n<ul>\n  <li><b>-p<\/b> — позволяет создать вложенные директории. <i>mkdir \/folder\/subfolder<\/i><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>Переменные окружения<\/h2>\n<p>Для просмотра переменных окружения используют команду <b>env<\/b>.<br \/>\nФормат вывода очень простой: слева от знака равно имя переменной, справа — значение.<\/p>\n<p>Основное предназначение переменных окружения — конфигурация системы и программ. Их удобство заключается в универсальности и отвязке от способа появления этих значений в системе.<\/p>\n<p>Для вывода переменной используется echo, а перед самой переменной ставится знак $.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">echo $HOME<\/code><\/pre><p>Существует два способа задавать значение переменной окружения: локальный и глобальный.<br \/>\nЛокальные переменные живут для конкретной программы:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">HOME=\/var cd<\/code><\/pre><p>Другой способ установки изменяет значение глобально, для всей сессии и выполняется так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">export HOME=\/var<\/code><\/pre><p><i>Обратите внимание на то, что изменение происходит в рамках текущей сессии, другими словами, если у вас открыто две вкладки терминала, и в каждой загружен баш, то изменение произойдет только в той вкладке, в которой будет выполнена команда.<\/i><\/p>\n<h2>История комнад<\/h2>\n<p>Для просмотра команд можно использовать клавиши вверх и вниз. Но все введенные команды хранятся в файле <b>.bash_history<\/b>, который лежит в домашней директории пользователя.<\/p>\n<p>Посмотреть историю можно и более простым способом, достаточно выполнить команду <b>history<\/b>.<\/p>\n<p>Последнее, и самое интересное — реверсивный поиск. Если нажать комбинацию Ctrl + r, то запустится специальный поиск по истории. Он ожидает ввода символов и сразу отображает ближайшую команду, в которой эти символы встречаются. Если найденное соответствие вас не устроило, то повторное нажатие Ctrl + r выберет следующее соответствие из истории.<\/p>\n<h2>Sudo<\/h2>\n<p>Ситуаций, в которых необходимо повышать привилегии и выполнять команды от рута (пользователя root), довольно много. С некоторыми мы уже столкнулись, с другими познакомимся в следующих уроках:<\/p>\n<p>Установка новых программ<br \/>\nНавигация по чужим директориям<br \/>\nИзменение прав доступа и владельцев файлов, не принадлежащих текущему пользователю<br \/>\nСоздание, редактирование и удаление файлов в местах, где не хватает прав текущего пользователя<br \/>\nЗапуск программ, требующих повышенные привилегии.<\/p>\n<p>Основной способ повышать привилегии в современных системах — утилита sudo.<br \/>\nПо умолчанию она пытается повысить права до суперпользователя.<\/p>\n<h2>Пакетный менеджер<\/h2>\n<p>Пакетный менеджер служат для установки программ. В каждой операционной системе есть свой пакетный менеджер, но его надо устанавливать отдельно.<\/p>\n<p>Основной его частью является каталог. В нем содержится список всех приложений, которые можно установить.<\/p>\n",
            "date_published": "2019-03-16T14:46:52-04:00",
            "date_modified": "2023-06-02T20:12:30-04:00",
            "tags": [
                "linux",
                "інструменти",
                "курси"
            ],
            "_date_published_rfc2822": "Sat, 16 Mar 2019 14:46:52 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "30",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "28",
            "url": "https:\/\/stefaniuk.website\/all\/digital-ocean\/",
            "title": "Digital Ocean",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/512px-DigitalOcean_logo.svg.png\" width=\"400\" height=\"400\" alt=\"\" \/>\n<\/div>\n<p>Уже пол года использую Digital Ocean для хостинга собственных проектов и проектов моих заказчиков.<\/p>\n<p><b>Что меня зацепило?<\/b><br \/>\nЯ не большой специалист в разворачивании и настройке виртуальный Linux машин. В этом деле мне помогаю пресеты. С их помощью можно в один клик развернуть машинку с подготовленным MySQL.<br \/>\nНедавно DO зарелизил маркетплейс для пресетов, тем самым каждый может создать для себя готовый пресет и поделится им.<\/p>\n<p><b>Управление виртуалкой<\/b><br \/>\nDO предоставляет удобный интерфейс для управления своей машиной. В нем можно создать бэкап и потом восстановить его. Управлять фаерволом, смотреть мониторинг системы.<\/p>\n<p><b>Дополнительные фичи<\/b><br \/>\nЗа последние нескольких месяцев добавили возможность создавать свой Kubernetes кластер. Кроме этого зарелизили создание серверов БД (пока только PostgreSQL), что тоже существенно облегчает жизнь.<\/p>\n<p>Самое приятное — ценовая политика.<br \/>\nЦены в Digital Ocean как по мне самые приятные. Всего за 5 долларов в месяц, можно получить виртуальную машину. Самый простой сервер БД обойдется в 15 долларов.<\/p>\n<p>Оставлю <a href=\"https:\/\/m.do.co\/c\/93b8eb6979de\">здесь<\/a> свою реферальную ссылку (получите 100$ на 60 дней для тестирования).<\/p>\n",
            "date_published": "2019-03-15T13:22:12-04:00",
            "date_modified": "2019-03-15T13:22:08-04:00",
            "tags": [
                "інструменти"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/512px-DigitalOcean_logo.svg.png",
            "_date_published_rfc2822": "Fri, 15 Mar 2019 13:22:12 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "28",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/512px-DigitalOcean_logo.svg.png"
                ]
            }
        },
        {
            "id": "11",
            "url": "https:\/\/stefaniuk.website\/all\/gudak-camera\/",
            "title": "Gudak camera",
            "content_html": "<p>Гудак представляет из себя эмулятор пленочной камеры. Видоискатель, в который толком ничего не увидишь, 24 кадра в катушке. Когда использовал катушку, следующая появится только через час, а предыдущая отправляется на «проявку» и фотки будут доступны через 3 дня.<\/p>\n<p>Также нету никаких пресетов, только рандомные эффекты.<\/p>\n<p>Но результат получается действительно интересный:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_6188.jpeg\" width=\"500\" height=\"375\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_6192.jpeg\" width=\"500\" height=\"667\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_6358.jpg\" width=\"500\" height=\"667\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_7569.jpeg\" width=\"500\" height=\"667\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_7576.jpeg\" width=\"500\" height=\"375\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_7577.jpeg\" width=\"500\" height=\"375\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_7579.jpeg\" width=\"500\" height=\"375\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/stefaniuk.website\/pictures\/IMG_7584.jpeg\" width=\"500\" height=\"375\" alt=\"\" \/>\n<\/div>\n",
            "date_published": "2019-01-19T11:26:14-04:00",
            "date_modified": "2019-03-30T14:28:06-04:00",
            "tags": [
                "інструменти",
                "огляд"
            ],
            "image": "https:\/\/stefaniuk.website\/pictures\/IMG_6188.jpeg",
            "_date_published_rfc2822": "Sat, 19 Jan 2019 11:26:14 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "11",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/stefaniuk.website\/pictures\/IMG_6188.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/IMG_6192.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/IMG_6358.jpg",
                    "https:\/\/stefaniuk.website\/pictures\/IMG_7569.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/IMG_7576.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/IMG_7577.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/IMG_7579.jpeg",
                    "https:\/\/stefaniuk.website\/pictures\/IMG_7584.jpeg"
                ]
            }
        },
        {
            "id": "6",
            "url": "https:\/\/stefaniuk.website\/all\/tools-for-analyze-application-dump\/",
            "title": "Инструменты для анализа дампа приложения",
            "content_html": "<p>Иногда наступает ситуация, когда нужно проанализировать дамп приложения. Но почти никто не знает что с ним в дальнейшем делать и какие есть инструменты для работы с ним. В данной заметке я хочу поделится своим набором инструментов.<\/p>\n<h2>Инструменты<\/h2>\n<ol start=\"1\">\n<li><a href=\"https:\/\/github.com\/Microsoft\/perfview\">PerfView<\/a> — открытое решение от компании Microsoft для анализа производительности.<\/li>\n<li><a href=\"https:\/\/www.jetbrains.com\/dotmemory\/\">dotMemory<\/a> — платное решение от компании JetBrains. Привлекает тем что не только умеет анализировать дампы, но и многое другое. Также имеет красивый и удобный GUI<\/li>\n<li><a href=\"https:\/\/github.com\/fremag\/MemoScope.Net\">MemoScope<\/a> — открытое решение от независимого разработчика.<\/li>\n<li>Visual Studio —  имеет встроенный функционал по анализу дампов приложения.<\/li>\n<\/ol>\n<h2>Ссылки<\/h2>\n<p><b>PerfView<\/b><\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/blogs.msdn.microsoft.com\/vancem\/tag\/perfview\/\">Блог MSDN по тегу PerfView<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=eX644hod65s\"> Video: PerfView: Measure and Improve Your App’s Performance For Free<\/a><\/li>\n<li><a href=\"https:\/\/channel9.msdn.com\/Series\/PerfView-Tutorial\">Video: Video tutorial by Chanel 9<\/a><\/li>\n<li><a href=\"https:\/\/blogs.msdn.microsoft.com\/dotnet\/2012\/10\/09\/improving-your-apps-performance-with-perfview\/\">Improving Your App’s Performance with PerfView<\/a><\/li>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=qGEeZZBwVp4\">Video: PerfView: The Ultimate .NET Performance Tool<\/a><\/li>\n<\/ol>\n<p><b>MemoScope<\/b><\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/github.com\/fremag\/MemoScope.Net\/wiki\">Официальная Wiki<\/a><\/li>\n<\/ol>\n<p><b>Visual Studio<\/b><\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=lU_YZtvslnI\">Video: Debugging Memory Leaks Using New NET Memory Diagnostic Tools<\/a><\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/debugger\/using-dump-files?view=vs-2017\">Visual Studio Docs<\/a><\/li>\n<\/ol>\n<p><b>DotMemory<\/b><\/p>\n<ol start=\"1\">\n<li><a href=\"https:\/\/www.jetbrains.com\/help\/dotmemory\/Examples.html\">Official Page<\/a><\/li>\n<\/ol>\n",
            "date_published": "2018-12-13T12:27:23-04:00",
            "date_modified": "2023-06-02T20:23:05-04:00",
            "tags": [
                "dotnet",
                "інструменти"
            ],
            "_date_published_rfc2822": "Thu, 13 Dec 2018 12:27:23 -0400",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4116,
    "_e2_ua_string": "Aegea 11.2 (v4116)"
}