Впны, тележка и авито. Иран становится ближе, чем кажется.
К слову, если кто-то ещё раздумывает какой впн выбрать/не выбрать - из всего списка лично я знаю и рекомендую Proton VPN - проверенные ребята, которые не будут (по крайней мере с высокой долей вероятности) смотреть ваш трафик и имеют хоть какую-то репутацию. Это те же ребята, что и протон мейл делают.
К слову, если кто-то ещё раздумывает какой впн выбрать/не выбрать - из всего списка лично я знаю и рекомендую Proton VPN - проверенные ребята, которые не будут (по крайней мере с высокой долей вероятности) смотреть ваш трафик и имеют хоть какую-то репутацию. Это те же ребята, что и протон мейл делают.
😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Какая точность у timestamp в sqlite? Забавный баг с #радиоТ
👍2
У АйтиБороды вышел видос, где он рассказывает что будет с контентом и его каналом, а так же выражает и объясняет свою позицию. Имхо, большой респект ему, т.к. реально по пальцам одной руки можно пересчитать публичных блогеров и так называемых "лидеров мнений" из СНГ, которые рискуя своей "долей пирога" - остаются людьми с большой буквы.
В ролике он в том числе упоминал кейс, когда ему писали по поводу рекламы из РФ, он отказывался, а на вопрос "почему" - уже начинало гореть. Отлично понимаю. Вспомнил как 4-ого марта мне написал HR из РФ с дефолтным "привет, не хотел бы [вакансия]?". Я прогуглил человечка и удостоверившись, что их hr-агенство действительно базируется в Питере, ответил, что не хочу иметь дел с HR из РФ.
Собственно, ответ на это письмо на скриншоте. Бывает и так, поэтому старайтесь не делить людей по паспорту. Делите по личным качествам конкретного человека.
🇺🇦❤️
В ролике он в том числе упоминал кейс, когда ему писали по поводу рекламы из РФ, он отказывался, а на вопрос "почему" - уже начинало гореть. Отлично понимаю. Вспомнил как 4-ого марта мне написал HR из РФ с дефолтным "привет, не хотел бы [вакансия]?". Я прогуглил человечка и удостоверившись, что их hr-агенство действительно базируется в Питере, ответил, что не хочу иметь дел с HR из РФ.
Собственно, ответ на это письмо на скриншоте. Бывает и так, поэтому старайтесь не делить людей по паспорту. Делите по личным качествам конкретного человека.
🇺🇦❤️
❤8
This media is not supported in your browser
VIEW IN TELEGRAM
Сколько человек работает в тиктоке? 😜 #радиоТ
🔥2
Основы Linux (обзор с практическим уклоном)
https://habr.com/ru/post/655275/ - хорошая входная статья в мир Linux.
Рекомендую тем, кто хочет
#библиотека_знаний #habr
https://habr.com/ru/post/655275/ - хорошая входная статья в мир Linux.
Рекомендую тем, кто хочет
начать разбираться в unix системах, подойдёт даже джунам :) Время чтения ~20 минут#библиотека_знаний #habr
👍3
Aspect Oriented Programming (AOP)
Аспектно ориентированное программирование? WTF!? Мало нам аббревиатур и концепций, подавай больше. На самом деле штука очень крутая и перспективная - расскажу в двух словах на примере C#.
Задача
Есть, допустим, репозиторий. К примеру UserRepository. Со стандартными CRUD операциями. Положить пользователя, вытащить по ID, удалить - ну вот это вот всё. И нужно вот нам собрать метрики - хотим видеть время выполнения каждого похода в субд.
Т.е. метрика, которая будет содержать название метода и время исполнения к примеру.
Как это сделать?
Решение
1) Пойдём от решения "в лоб".
Пишем в начале каждого метода StopWatch.Start, а в конце StopWatch.ElapsedMilliseconds и пушаем метрику.
2) Окей, тут у нас развилочка по решениям. Более топорный способ - создадим базовый класс/хелпер, где сделаем метод-враппер, который будет в себя принимать некий Action (делегат), исполнять его и обернув тем же самым кодом - успокаиваемся. Или нет?
3) Третья стадия уже более generic-like подход и в целом скорее уже ближе к AOP, хотя по факту скорее ООП.
Мы можем вынести из репозитория интерфейс и создать декоратор для репозитория. Оборачивать все репозитории им и "под капотом" вызывать метрики. Код приводить не буду, телега не предполагает длинных постов :) (можете глянуть на MSDN - понятная и коротенькая статейка).
Это уже взрослый подход. Но всё еще хочется немного магии.
3) И так. А вот и дошли до AOP. А что если нам создать атрибут, который будет сам оборачивать наш метод в нужный код? Звучит-то клёво, но как? Ведь атрибуты это про метаданные, они не являются декораторами сами по себе.
В C# есть пару классных библиотек. Самые известные это PostSharp и Fody. Они на этапе компиляции могут менять IL код. Это значит, вы можете пометить, допустим специальным атрибутом вам класс/метод и уже после компиляции в него вставится нужный код. В нашем случае - вызов метрик будет выглядеть уже как-то так :
Но... есть нюансы :) Во-первых, PostSharp, говорят, хорош, но стоит по 700$ per developer. Цена - 🐴. Есть фри версия, но с ограничениями. Не интересно.
Fody же - бесплатный и с открытым кодом. Наш кейс он отлично покрывает (см. MethodTimer), + умеет навешивать "хуки" на методы из коробки. Но и тут есть нюансы. Например, он не позволяет делать re-execute методов, т.е. какой-нибудь Retry Policy уже не навесишь. Так же есть нюансы по работе с async/await - он не везде поддерживается и судя по вкладке Issues на гитхабе - есть баги.
В качестве остаточных решений еще можно подумать в сторону молодого Roslyn, но это уже заморачиваться нужно. Есть еще старый добрый T4 темплейтинг. И пару встроенных классов в .net, которые позволяют переписывать метод в рантайме, но не изменять его.
Что ж. Штука классная, но ждём развития. Надеюсь, в ближайшие пару лет появится что-то "из-коробки".
Пара общих статей с рефами :
Aspect Oriented Programming (AOP) через исходный код
Теория и практика AOP. Как мы это делаем в Яндексе
Aspect-Oriented Programming : Aspect-Oriented Programming with the RealProxy Class
#csharp #библиотека_знаний #авторское
Аспектно ориентированное программирование? WTF!? Мало нам аббревиатур и концепций, подавай больше. На самом деле штука очень крутая и перспективная - расскажу в двух словах на примере C#.
Задача
Есть, допустим, репозиторий. К примеру UserRepository. Со стандартными CRUD операциями. Положить пользователя, вытащить по ID, удалить - ну вот это вот всё. И нужно вот нам собрать метрики - хотим видеть время выполнения каждого похода в субд.
Т.е. метрика, которая будет содержать название метода и время исполнения к примеру.
Как это сделать?
Решение
1) Пойдём от решения "в лоб".
Пишем в начале каждого метода StopWatch.Start, а в конце StopWatch.ElapsedMilliseconds и пушаем метрику.
CreateUser(User user){
StopWatch sw = new StopWatch();
sw.Start();
//поход в базу
sw.Stop();
Metrics.Add('UserRepository.CreateUser',sw.ElapsedMs);
}
и что дальше? Будем нарушать DRY (don't repeat yourself) и вставлять данный кусок ВО ВСЕ МЕТОДЫ? Можно, но ... не можно. Очевидно, что нужно это куда-то выносить. Куда и как?2) Окей, тут у нас развилочка по решениям. Более топорный способ - создадим базовый класс/хелпер, где сделаем метод-враппер, который будет в себя принимать некий Action (делегат), исполнять его и обернув тем же самым кодом - успокаиваемся. Или нет?
class RepositoryBase : {
CallWithMetric(Action act){
StopWatch sw = new StopWatch();
sw.Start();
act.Invoke();
sw.Stop();
Metrics.Add('UserRepository.CreateUser',sw.ElapsedMs);
}
}
и получается что-то такое :CreateUser(User user){
CallWithMetric(() => {
//идём в базу
})
}
неплохо, но не сказать, что красиво. коллбековая джаваскриптщина какая-то.3) Третья стадия уже более generic-like подход и в целом скорее уже ближе к AOP, хотя по факту скорее ООП.
Мы можем вынести из репозитория интерфейс и создать декоратор для репозитория. Оборачивать все репозитории им и "под капотом" вызывать метрики. Код приводить не буду, телега не предполагает длинных постов :) (можете глянуть на MSDN - понятная и коротенькая статейка).
Это уже взрослый подход. Но всё еще хочется немного магии.
3) И так. А вот и дошли до AOP. А что если нам создать атрибут, который будет сам оборачивать наш метод в нужный код? Звучит-то клёво, но как? Ведь атрибуты это про метаданные, они не являются декораторами сами по себе.
В C# есть пару классных библиотек. Самые известные это PostSharp и Fody. Они на этапе компиляции могут менять IL код. Это значит, вы можете пометить, допустим специальным атрибутом вам класс/метод и уже после компиляции в него вставится нужный код. В нашем случае - вызов метрик будет выглядеть уже как-то так :
[TimeElapsedMetric]Удобно. Красиво. Магия!
CreateUser(User user){
//поход в базу
}
Но... есть нюансы :) Во-первых, PostSharp, говорят, хорош, но стоит по 700$ per developer. Цена - 🐴. Есть фри версия, но с ограничениями. Не интересно.
Fody же - бесплатный и с открытым кодом. Наш кейс он отлично покрывает (см. MethodTimer), + умеет навешивать "хуки" на методы из коробки. Но и тут есть нюансы. Например, он не позволяет делать re-execute методов, т.е. какой-нибудь Retry Policy уже не навесишь. Так же есть нюансы по работе с async/await - он не везде поддерживается и судя по вкладке Issues на гитхабе - есть баги.
В качестве остаточных решений еще можно подумать в сторону молодого Roslyn, но это уже заморачиваться нужно. Есть еще старый добрый T4 темплейтинг. И пару встроенных классов в .net, которые позволяют переписывать метод в рантайме, но не изменять его.
Что ж. Штука классная, но ждём развития. Надеюсь, в ближайшие пару лет появится что-то "из-коробки".
Пара общих статей с рефами :
Aspect Oriented Programming (AOP) через исходный код
Теория и практика AOP. Как мы это делаем в Яндексе
Aspect-Oriented Programming : Aspect-Oriented Programming with the RealProxy Class
#csharp #библиотека_знаний #авторское
👍4
Виктория Бородина сделала неплохую базовую табличку по иммиграции, довольно интересно глянуть. Тема, конечно, сложная и много нюансов по каждому из пунктов, но в целом - маст си.
Польша улыбнула. Всё в целом закономерно и в двух словах - лучше там, куда сложнее всего уехать. Законы конкуренции они такие.
[20min] : https://www.youtube.com/watch?v=5aexqRQeLNE
#иммиграция
Польша улыбнула. Всё в целом закономерно и в двух словах - лучше там, куда сложнее всего уехать. Законы конкуренции они такие.
[20min] : https://www.youtube.com/watch?v=5aexqRQeLNE
#иммиграция
YouTube
Сравнительная таблица ТОП 10 IT - стран для иммиграции. Зарплата, накопления, жилье,гражданство и др
❗Ссылка для получения сравнительной таблицы по IT-странам из видео - https://docs.google.com/forms/d/e/1FAIpQLSes48sYJi47HAW74Yv-30VpRqYbQbWoZSqHCSUYa_j5w_fflw/viewform
Разбираем ТОП-10 стран для иммиграции по 7 критериям, с которыми вы можете подробно ознакомиться…
Разбираем ТОП-10 стран для иммиграции по 7 критериям, с которыми вы можете подробно ознакомиться…
👍2
Ну и на чем написан этот фронт? 😂
😁3
Очередное крутое интервью. Про работу в гугле, пет-проекты ну и в первую очередь личная история.
https://www.youtube.com/watch?v=53nKPT7L0Do
#video
https://www.youtube.com/watch?v=53nKPT7L0Do
#video
YouTube
Секретная лаборатория Google X | 11 лет в Google | Программист в США
Секретная лаборатория Google X — место, работал Тилек Мамутов, project lead и программист в США. Каково работать там, где создаются самые амбициозные проекты Google (беспилотники WayMo, воздушные интернет-шары Loon и т.д.) и где за фейл можно получить повышение?…
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Про goto: помнят многие олды (привет turbo pascal!) , но есть ещё более весёлая штука 😁😁 #радиот
❤2
Немного из мира сигналов. Которые по проводам бегают.
Если кто-то увлекается автомобилями и подписан на ютуб канал "ИЛЬДАР АВТО-ПОДБОР", те знают, что у него есть рубрика "оживление мертвеца". Её суть в двух словах : ребята выезжают на сложные "баги" в автомобилях и стараются найти их причину/пофиксать. Вы все понимаете, что более ли менее современный автомобиль состоит из сотен электронных систем/схем/блоков и так далее. И зачастую, по очень разным причинам это всё ломается и сбоит. Особенно со временем.
И вроде бы казалось где тут айтишка, но вот же она! Ведь по сути, поиск таких багов в электронике - такая же сложная задача, как и выискивание багов в нашем коде.
В данном ролике ребята оживляют BMW x5 e53, и используют осцилограф для дебага! Тут же и разъясняют как это всё работает. Оч крутой контент, имхо.
Советую к просмотру :) Таймкод проставлен, длительность просмотра ~5 минут.
https://youtu.be/06cWmc2Zpnk?t=1359
Если кто-то увлекается автомобилями и подписан на ютуб канал "ИЛЬДАР АВТО-ПОДБОР", те знают, что у него есть рубрика "оживление мертвеца". Её суть в двух словах : ребята выезжают на сложные "баги" в автомобилях и стараются найти их причину/пофиксать. Вы все понимаете, что более ли менее современный автомобиль состоит из сотен электронных систем/схем/блоков и так далее. И зачастую, по очень разным причинам это всё ломается и сбоит. Особенно со временем.
И вроде бы казалось где тут айтишка, но вот же она! Ведь по сути, поиск таких багов в электронике - такая же сложная задача, как и выискивание багов в нашем коде.
В данном ролике ребята оживляют BMW x5 e53, и используют осцилограф для дебага! Тут же и разъясняют как это всё работает. Оч крутой контент, имхо.
Советую к просмотру :) Таймкод проставлен, длительность просмотра ~5 минут.
https://youtu.be/06cWmc2Zpnk?t=1359
🔥4👍1