CodeWars #1
Если вы хотите прокачаться во владении каким-либо языком программирования, параллельно прокачаться в алгоритмах, структурах данных и т.д., то вы можете воспользоваться различными сервисами, предлагающими такие задачи.
Например, CodeWars. Выбираете язык, сложность, и вперед. Есть еще LeetCode, HackerRank.
Когда-то я решал задачки на CodeWars, но потом надоело. Возможно, было бы неплохо снова к этому вернуться, чтобы заставить мозг поработать.
На сегодня предлагаю решение одной из задач.
Задача: Написать функцию, которая принимает массив из слов и склеивает их вместе в предложение, возвращая его. Нет необходимости проверять правильность строк со словами, очищать их, или добавлять пунктуацию, но вы должны добавить пробелы между словами. Будьте осторожны, пробелов в начале и конце предложения быть не должно!
Решение:
Самым банальным решением для такого сценария было бы написать цикл, однако в питоне у строки есть метод join(), который может принять в качестве аргумента список, и "склеить" элементы между собой, используя строку, на которой join был вызван.
Используем это. По-хорошему, мы должны проверить, что переданный нам аргумент является списком, и что он не пуст.
Для этого, во-первых, используем функцию isinstance(), она принимает два аргумента. Первый - объект какого-то типа, второй - тип, на соответствие которому мы хотим проверить объект. Функция вернет True если тип совпадет, и False, если нет. Также мы проверим, что список не пустой. В Python пустой список автоматически приводим к False, что исключает необходимость проверять на пустоту путём сравнения длины списка с нулём.
Итоговая функция на картинке к посту.
#codewars #python
Если вы хотите прокачаться во владении каким-либо языком программирования, параллельно прокачаться в алгоритмах, структурах данных и т.д., то вы можете воспользоваться различными сервисами, предлагающими такие задачи.
Например, CodeWars. Выбираете язык, сложность, и вперед. Есть еще LeetCode, HackerRank.
Когда-то я решал задачки на CodeWars, но потом надоело. Возможно, было бы неплохо снова к этому вернуться, чтобы заставить мозг поработать.
На сегодня предлагаю решение одной из задач.
Задача: Написать функцию, которая принимает массив из слов и склеивает их вместе в предложение, возвращая его. Нет необходимости проверять правильность строк со словами, очищать их, или добавлять пунктуацию, но вы должны добавить пробелы между словами. Будьте осторожны, пробелов в начале и конце предложения быть не должно!
Решение:
Самым банальным решением для такого сценария было бы написать цикл, однако в питоне у строки есть метод join(), который может принять в качестве аргумента список, и "склеить" элементы между собой, используя строку, на которой join был вызван.
",".join([1,2,3]) # 1,2,3
Используем это. По-хорошему, мы должны проверить, что переданный нам аргумент является списком, и что он не пуст.
Для этого, во-первых, используем функцию isinstance(), она принимает два аргумента. Первый - объект какого-то типа, второй - тип, на соответствие которому мы хотим проверить объект. Функция вернет True если тип совпадет, и False, если нет. Также мы проверим, что список не пустой. В Python пустой список автоматически приводим к False, что исключает необходимость проверять на пустоту путём сравнения длины списка с нулём.
Итоговая функция на картинке к посту.
#codewars #python
👍1
CodeWars #2
Продолжаем решать задачи с CodeWars.
Сегодня у нас простая задача: дан список целых чисел и наша задача в том, чтобы найти минимальное число из массива.
Например:
Дан список [34, 15, 88, 2], мы должны вернуть 2.
Дан список [34, -345, -1, 100], мы должны вернуть -345.
Список на пустоту можно не проверять.
В стандартной библиотеке Python предусмотрены различные функции, в том числе математические. В частности есть функции min() и max() для поиска минимального и максимального значения в списке. Функцией min() мы и воспользуемся. Наше решение будет простым, и лаконичным.
#codewars #python
Продолжаем решать задачи с CodeWars.
Сегодня у нас простая задача: дан список целых чисел и наша задача в том, чтобы найти минимальное число из массива.
Например:
Дан список [34, 15, 88, 2], мы должны вернуть 2.
Дан список [34, -345, -1, 100], мы должны вернуть -345.
Список на пустоту можно не проверять.
В стандартной библиотеке Python предусмотрены различные функции, в том числе математические. В частности есть функции min() и max() для поиска минимального и максимального значения в списке. Функцией min() мы и воспользуемся. Наше решение будет простым, и лаконичным.
def find_smallest_int(arr):
return min(arr)
#codewars #python
👍1
Python для троллинга Java\C#\PHP разработчиков
Как известно, объектно-ориентированное прогаммирование, позволяет создавать объекты, вступающие друг с другом в отношения родитель-наследник.
Например:
Здесть класс BlackCat будет наследником по отношению к классу Cat. Зачем это нужно? Во-первых, на основе наследования легко работать с дополнением. Нам не нужно полностью копировать класс Cat, чтобы добавить в него что-то новое. Мы можем наследоваться от него.
В языках со строгой системой типов вы уже на этапе компиляции получите ошибку, если передадите объект не того типа в метод или функцию. Python же язык с достаточно специфическим отношением к типобезопасности, и, хотя тайп-хинты (возможность указать, что вот в эту функцию вот этим аргументом передайте, пожалуйста, вот такой вот тип) существуют, ничто не мешает творить непотребства.
В частности, в Python, для проверки является ли некоторый наследником по отношению к другому типу, можно использовать функцию issubclass(). Она принимает два аргумента - проверяемый на родство тип, и предполагаемый родитель.
Пример 1:
Пример 2:
Собственно в Python есть возможность переопределить это поведение с помощью специального метода subclasshook, реализуемого в родительском классе.
Пример 3:
Спасибо, Гвидо, что дал нам возможность жирно потроллить джавистов!
#python
Как известно, объектно-ориентированное прогаммирование, позволяет создавать объекты, вступающие друг с другом в отношения родитель-наследник.
Например:
class Cat:
pass
class BlackCat(Cat):
pass
Здесть класс BlackCat будет наследником по отношению к классу Cat. Зачем это нужно? Во-первых, на основе наследования легко работать с дополнением. Нам не нужно полностью копировать класс Cat, чтобы добавить в него что-то новое. Мы можем наследоваться от него.
В языках со строгой системой типов вы уже на этапе компиляции получите ошибку, если передадите объект не того типа в метод или функцию. Python же язык с достаточно специфическим отношением к типобезопасности, и, хотя тайп-хинты (возможность указать, что вот в эту функцию вот этим аргументом передайте, пожалуйста, вот такой вот тип) существуют, ничто не мешает творить непотребства.
В частности, в Python, для проверки является ли некоторый наследником по отношению к другому типу, можно использовать функцию issubclass(). Она принимает два аргумента - проверяемый на родство тип, и предполагаемый родитель.
Пример 1:
class Cat:
pass
class Dog:
pass
issubclass(Dog, Cat) # False - Собака не наследует кошку
Пример 2:
class Cat:
pass
class Dog(Cat):
pass
issubclass(Dog, Cat) # True - собака воспитана кошками
Собственно в Python есть возможность переопределить это поведение с помощью специального метода subclasshook, реализуемого в родительском классе.
Пример 3:
from abc import ABC
class Cat(ABC):
def __subclasshook__(cls, *agrs):
print(cls)
return True
class Dog:
pass
issubclass(Dog, Cat) # True
issubclass(int, Cat) # True - видели когда-нибудь целочисленных кошек?
Спасибо, Гвидо, что дал нам возможность жирно потроллить джавистов!
#python
😁2
CodeWars #3
Решаем следующую задачу: нужно подсчитать количество гласных в строке, которая нам дана в качестве аргумента. Считаем, что символы a, e, i, o, u это гласные. Входная строка будет состоять из символов в нижнем регистре (это важно, потому что в некоторых случаях требуется данные привести к какому-то виду) и пробелов.
Задача достаточно простая - берем список гласных, идем циклом по строке (да-да, по строкам в Python можно ходить циклом, на каждой итерации мы получаем следующий символ), проверяем входит ли очередной символ в список искомых. Если да - инкрементируем счетчик.
А можно ли лаконичнее? Да!
Здесь использован так называемый list comprehension - специальный синтаксис, который позволяет в одну строчку кода описать создание последовательности. Базово, он состоит из выражения
Здесь x - это переменная цикла, которая заполняется значением из последовательности inputStr. На выходе у такого выражения будет список из всех элементов, что были в inputStr. По ходу пьесы x можно модифицировать.
Соответственно, как и в теле цикла, в list comprehension можно дописывать условие, чтобы отбраковать те элементы, которые нам не нужны. Делается это с помощью if.
Таким образом, выражение из второго примера даст нам список символов, которые точно входят в интересующий нас диапазон (aeoiu).
Остается взять его длину с помощью функции len(), и вернуть. Кстати, знаете, почему значение, возвращенное функцией len() не проверяется на равенство с нулём, а просто возвращается как есть? Дело, опять же, в системе типов. Ноль приводится к False для целых чисел, все остальное - к True. Да и сами константы True и False в Python это целые числа. True = 1, False = 0. Поэтому выражение 1 + True будет равно 2.
#codewars #python
Решаем следующую задачу: нужно подсчитать количество гласных в строке, которая нам дана в качестве аргумента. Считаем, что символы a, e, i, o, u это гласные. Входная строка будет состоять из символов в нижнем регистре (это важно, потому что в некоторых случаях требуется данные привести к какому-то виду) и пробелов.
Задача достаточно простая - берем список гласных, идем циклом по строке (да-да, по строкам в Python можно ходить циклом, на каждой итерации мы получаем следующий символ), проверяем входит ли очередной символ в список искомых. Если да - инкрементируем счетчик.
def get_count(sentence):
# Список гласных букв
vowels = ["a", "e", "i", "o", "u"]
# Счетчик, инициализируем нулём
count = 0
# Цикл по строке, допустим для строки `hello` тело цикла выполнится пять раз
# На каждой итерации в переменной letter будет буква из строки
# Сначала h, потом e, потом l, и т.д.
for letter in sentence:
# Оператор in проверяет вхождение элемента letter в список vowels
# Если элемент присутствует - тело if выполнится
if letter in vowels:
# Инкрементируем (увеличиваем на 1) наш счетчик
count += 1
# Возвращаем значение счетчика
return count
А можно ли лаконичнее? Да!
def get_count(inputStr):
return len([x for x in inputStr if x in 'aeoiu'])
Здесь использован так называемый list comprehension - специальный синтаксис, который позволяет в одну строчку кода описать создание последовательности. Базово, он состоит из выражения
[x for x in inputStr]
Здесь x - это переменная цикла, которая заполняется значением из последовательности inputStr. На выходе у такого выражения будет список из всех элементов, что были в inputStr. По ходу пьесы x можно модифицировать.
digits = [1,2,3,4]
# Квадраты чисел в digits, операция ** (две звездочки) - возведение в степень
squares = [x**2 for x in digits]
Соответственно, как и в теле цикла, в list comprehension можно дописывать условие, чтобы отбраковать те элементы, которые нам не нужны. Делается это с помощью if.
digits = [1,2,3,4]
# Квадраты чисел в digits, операция ** (две звездочки) - возведение в степень
# В блоке if мы отбираем x только если он четный (% - остаток от деления, если он равен нулю - берем)
squares = [x**2 for x in digits if x % 2 == 0]
Таким образом, выражение из второго примера даст нам список символов, которые точно входят в интересующий нас диапазон (aeoiu).
[x for x in inputStr if x in 'aeoiu']
Остается взять его длину с помощью функции len(), и вернуть. Кстати, знаете, почему значение, возвращенное функцией len() не проверяется на равенство с нулём, а просто возвращается как есть? Дело, опять же, в системе типов. Ноль приводится к False для целых чисел, все остальное - к True. Да и сами константы True и False в Python это целые числа. True = 1, False = 0. Поэтому выражение 1 + True будет равно 2.
#codewars #python
👍1
Codewars #4
Создайте функцию, которая вернет сумму двух наименьших неотрицательных чисел из предоставленного списка, в котором будут минимум 4 элемента. Гарантируется, что в массиве будут только целые положительные числа.
Пример: для списка [19, 5, 42, 2, 77] функция вернет 7 (5 + 2).
Итак, у нас есть функция:
И мы точно знаем, что numbers - это список. Но мы не знаем какие два элемента будут наименьшими. Кроме того непонятно будут ли повторения - но так, как в примере их не было, не будем принимать их во внимание. Решение "в лоб" - перебор с помощью циклов.
Примерно так, в первом цикле мы берем первый элемент, и далее сравниваем его со всеми последующими. Если мы видим, что следующий элемент меньше предыдущего - то берем уже его. Для поиска второго элемента делаем то же самое, только сравниваем еще и с первым. Способ рабочий, но громоздкий и долгий.
Есть решение лучше - сортировка! Отсортируем список по возрастанию и просто вернем сумму двух первых элементов!
#codewars #python
Создайте функцию, которая вернет сумму двух наименьших неотрицательных чисел из предоставленного списка, в котором будут минимум 4 элемента. Гарантируется, что в массиве будут только целые положительные числа.
Пример: для списка [19, 5, 42, 2, 77] функция вернет 7 (5 + 2).
Итак, у нас есть функция:
def sum_two_smallest_numbers(numbers):
pass
И мы точно знаем, что numbers - это список. Но мы не знаем какие два элемента будут наименьшими. Кроме того непонятно будут ли повторения - но так, как в примере их не было, не будем принимать их во внимание. Решение "в лоб" - перебор с помощью циклов.
first_num = 0
second_num = 0
for i in numbers:
if not first_num:
first_num = i
if first_num < i:
first_num = i
for i in numbers:
if not second_num:
second_num = i
if second_num >= first_num and second_num < i:
second_num = i
Примерно так, в первом цикле мы берем первый элемент, и далее сравниваем его со всеми последующими. Если мы видим, что следующий элемент меньше предыдущего - то берем уже его. Для поиска второго элемента делаем то же самое, только сравниваем еще и с первым. Способ рабочий, но громоздкий и долгий.
Есть решение лучше - сортировка! Отсортируем список по возрастанию и просто вернем сумму двух первых элементов!
def sum_two_smallest_numbers(numbers):
numbers = sorted(numbers)
return numbers[0] + numbers[1]
#codewars #python
👍1
Про настольные приложение
Когда я начинал изучать C# в университете - мы начинали с написания настольных приложений. Тем более что встроенный WIndows Forms был вообще не сложен в освоении. И даже в методичках по базам данных были примеры того UI, который нужно реализовать. Сейчас, в связи с тем, что появилось некоторое разделение на front-end и back-end писать UI (как по мне) стали больше для web-приложений. Но иногда бывает нужно сделать настольное приложение. В статье рассказываю о том, как сделать такое GUI-приложение в golang.
А вообще, если интересует UI для Python но неохота заморачиваться с HTML - можно посмотреть в сторону PyQt. Qt - кроссплатформенный фреймворк. Его можно много куда затащить (даже в тот же golang). Из минусов - скорее всего снова придется писать много кода.
#golang #gui
Когда я начинал изучать C# в университете - мы начинали с написания настольных приложений. Тем более что встроенный WIndows Forms был вообще не сложен в освоении. И даже в методичках по базам данных были примеры того UI, который нужно реализовать. Сейчас, в связи с тем, что появилось некоторое разделение на front-end и back-end писать UI (как по мне) стали больше для web-приложений. Но иногда бывает нужно сделать настольное приложение. В статье рассказываю о том, как сделать такое GUI-приложение в golang.
А вообще, если интересует UI для Python но неохота заморачиваться с HTML - можно посмотреть в сторону PyQt. Qt - кроссплатформенный фреймворк. Его можно много куда затащить (даже в тот же golang). Из минусов - скорее всего снова придется писать много кода.
#golang #gui
👍1
Интересный случай
Пишет мне как-то Женя. Этой мой коллега, вместе мы работали еще в Астраханьэнерго. Сейчас он в Берлине. Скидывает, значит, скриншот переписки с неким человеком. Человек интересуется - знает ли Женя владельца аккаунта на гитхабе. И скидывает ссылку на мой аккаунт, со словами, дескать, этот Дмитрий взял заказ и деньги, а теперь на связь не выходит!
Ну что за дела, думаю. Деньги я люблю, работать нет, тут все сходится. Но чтобы я взял деньги и на связь не выходил - отродясь такого не было. Если бы фигню всякую писал - то да, похоже, а так - я не я, лошадь не моя. Будем разбираться. Прошу Женю дать страдальцу мой контакт для прямой связи. Пишет. Разместил, мол, заказ на Хабр.Фрилансе, помощь была нужна с ВКР (выпускная квалификационная работа). В заказе был указан телеграм-аккаунт, куда постучался потенциальный исполнитель. Представился Дмитрием, показал документ-портфолио, со ссылкой на МОЙ гитхаб аккаунт, взял десять тысяч рублёв, а теперь на связь не выходит, и везде заблокировал.
Немного выяснив обстоятельства, и даже списавшись с предполагаемым виновником (мне он, кстати, ответил, сказав что ни у кого ничего не брал и вообще это бред, но так уж и быть, свяжется с потерпевшим, дабы не порочить свое честное имя), расскажу про типичные совершенные ошибки:
1. Общаться с исполнителем за пределами фриланс-площадки.
Исполнитель удалит переписку, и всё. Ничего не докажешь, если только ежесекундно не делать скрины. Но кто так делает? Никто. Общаться в tg можно, но все важные детали по проекту\заказу лучше обсуждать там, где условия контролируемы. Кроме того, фриланс-площадки охотнее встанут на сторону заказчика, чем исполнителя. Деньги-то им заказчик несет.
2. Переводить деньги на карту, да еще и из банка другой страны.
Чарджбэк в пределах РФ для перевода в пределах банка не всегда получится сделать, что уж про международный банковский перевод говорить. Денюшка ушла - всё.
3. Не пользоваться безопасной сделкой.
Безопасные сделки для этого и придуманы. Заказчик переводит сумму на счет фриланс-площадке, выступающей в роли брокера. Исполнитель знает, что заказ оплачен, но деньги он получит после сдачи работы. Страховка и для заказчика и для исполнителя.
Ну и на последок. Как понять, что кто-то выдает себя за меня? Топ-5 red flag`ов:
1. Слишком вежлив, сообщения без мата.
2. Ни разу не ругал Директум.
3. Маленькая сумма сделки.
4. Не шлет мемы с Буруновым в переписке.
5. Ни разу не призвал уверовать в Директум.
#мюсли
Пишет мне как-то Женя. Этой мой коллега, вместе мы работали еще в Астраханьэнерго. Сейчас он в Берлине. Скидывает, значит, скриншот переписки с неким человеком. Человек интересуется - знает ли Женя владельца аккаунта на гитхабе. И скидывает ссылку на мой аккаунт, со словами, дескать, этот Дмитрий взял заказ и деньги, а теперь на связь не выходит!
Ну что за дела, думаю. Деньги я люблю, работать нет, тут все сходится. Но чтобы я взял деньги и на связь не выходил - отродясь такого не было. Если бы фигню всякую писал - то да, похоже, а так - я не я, лошадь не моя. Будем разбираться. Прошу Женю дать страдальцу мой контакт для прямой связи. Пишет. Разместил, мол, заказ на Хабр.Фрилансе, помощь была нужна с ВКР (выпускная квалификационная работа). В заказе был указан телеграм-аккаунт, куда постучался потенциальный исполнитель. Представился Дмитрием, показал документ-портфолио, со ссылкой на МОЙ гитхаб аккаунт, взял десять тысяч рублёв, а теперь на связь не выходит, и везде заблокировал.
Немного выяснив обстоятельства, и даже списавшись с предполагаемым виновником (мне он, кстати, ответил, сказав что ни у кого ничего не брал и вообще это бред, но так уж и быть, свяжется с потерпевшим, дабы не порочить свое честное имя), расскажу про типичные совершенные ошибки:
1. Общаться с исполнителем за пределами фриланс-площадки.
Исполнитель удалит переписку, и всё. Ничего не докажешь, если только ежесекундно не делать скрины. Но кто так делает? Никто. Общаться в tg можно, но все важные детали по проекту\заказу лучше обсуждать там, где условия контролируемы. Кроме того, фриланс-площадки охотнее встанут на сторону заказчика, чем исполнителя. Деньги-то им заказчик несет.
2. Переводить деньги на карту, да еще и из банка другой страны.
Чарджбэк в пределах РФ для перевода в пределах банка не всегда получится сделать, что уж про международный банковский перевод говорить. Денюшка ушла - всё.
3. Не пользоваться безопасной сделкой.
Безопасные сделки для этого и придуманы. Заказчик переводит сумму на счет фриланс-площадке, выступающей в роли брокера. Исполнитель знает, что заказ оплачен, но деньги он получит после сдачи работы. Страховка и для заказчика и для исполнителя.
Ну и на последок. Как понять, что кто-то выдает себя за меня? Топ-5 red flag`ов:
1. Слишком вежлив, сообщения без мата.
2. Ни разу не ругал Директум.
3. Маленькая сумма сделки.
4. Не шлет мемы с Буруновым в переписке.
5. Ни разу не призвал уверовать в Директум.
#мюсли
🔥1
Про гарантии трудоустройства
Есть на IT-курсах (но не на всех) такая фишка - вы, мол, курс наш пройдите, а мы вас трудоустроим. Мамой клянусь, век созвонов не видать! Возможность востребованная, и даже может служить киллер-фичей. Джунам, ни дня не работавшим в IT, устроиться тяжело. Работодатели учить никого не хотят. Тем более, что на обучение нужно тратить время, деньги, и платить сотруднику зарплату, пока тот учится.
Если работодатель предоставляет такую возможность, чем это хорошо для сотрудника:
- Учиться за счет работодателя, получая при этом заработную плату
- Получить знания и навыки, которые нельзя отнять при увольнении
Чем может быть плохо:
- Работодатель может заключать ученический договор, предусматривающий либо необходимость отработать определенное время (например 3 года) в компании, либо вернуть деньги, затраченные на обучение при увольнении, в случае, если сотрудник увольняется раньше оговоренного договором срока
Несмотря на отрицательные стороны, возможность с нуля научиться и проработать N лет в IT-компании может завлечь желающих устроиться хоть куда-нибудь.
Я же хочу рассказать о другом. О том, почему лучше не верить гарантиям трудоустройства.
Во-первых, потому, что трудоустроят вас явно не в Google/Yandex/Sber/Ozon, а на галеру, которая согласна брать начинающего специалиста без внятных перспектив его развития. Ну и с соответствующими условиями оплаты.
Во-вторых, вряд ли кто-то сможет (и будет пытаться) повлиять на ваш стиль общения. Тут все очень индивидуально. Некоторые кандидаты, даже при наличии хороших хард-скиллов, производят отталкивающее впечатление из-за своей манеры общения. Личная неприязнь. Ничего тут не поделаешь.
И в третьих. Это ваша трудовая биография. Расскажу случай из практики. Проводили собеседования на должность C#-разработчика. Один из кандидатов прошел собес, все нормально, ничем не выделялся. Начали оформлять, и полезли звоночки.
Первым звоночком была опечатка в заявлении о приеме на работу. Человек написал “Прошу принять на должность инжИнера”. Я вот этот текст пишу, и у меня слово инжИнер подчеркнуто красным. Неужели в Ворде так сложно исправить?
Второй (и собственно последний) звоночек - выписка из электронной трудовой. Человек за 4 года сменил примерно 20 мест работы, работая везде от 2-х недель до 2-х месяцев. А последним местом работы было троллейбусное депо, и должность “Водитель троллейбусов”. Причем, компании, указанные в резюме на HeadHunter, вообще не совпадали с записями в трудовой. На вопрос “Что это, собственно, за Харитон Ульяна Йозеф Николай Яков?” внятных разъяснений не последовало, а посему в заключении трудового договора было отказано.
#мюсли
Есть на IT-курсах (но не на всех) такая фишка - вы, мол, курс наш пройдите, а мы вас трудоустроим. Мамой клянусь, век созвонов не видать! Возможность востребованная, и даже может служить киллер-фичей. Джунам, ни дня не работавшим в IT, устроиться тяжело. Работодатели учить никого не хотят. Тем более, что на обучение нужно тратить время, деньги, и платить сотруднику зарплату, пока тот учится.
Если работодатель предоставляет такую возможность, чем это хорошо для сотрудника:
- Учиться за счет работодателя, получая при этом заработную плату
- Получить знания и навыки, которые нельзя отнять при увольнении
Чем может быть плохо:
- Работодатель может заключать ученический договор, предусматривающий либо необходимость отработать определенное время (например 3 года) в компании, либо вернуть деньги, затраченные на обучение при увольнении, в случае, если сотрудник увольняется раньше оговоренного договором срока
Несмотря на отрицательные стороны, возможность с нуля научиться и проработать N лет в IT-компании может завлечь желающих устроиться хоть куда-нибудь.
Я же хочу рассказать о другом. О том, почему лучше не верить гарантиям трудоустройства.
Во-первых, потому, что трудоустроят вас явно не в Google/Yandex/Sber/Ozon, а на галеру, которая согласна брать начинающего специалиста без внятных перспектив его развития. Ну и с соответствующими условиями оплаты.
Во-вторых, вряд ли кто-то сможет (и будет пытаться) повлиять на ваш стиль общения. Тут все очень индивидуально. Некоторые кандидаты, даже при наличии хороших хард-скиллов, производят отталкивающее впечатление из-за своей манеры общения. Личная неприязнь. Ничего тут не поделаешь.
И в третьих. Это ваша трудовая биография. Расскажу случай из практики. Проводили собеседования на должность C#-разработчика. Один из кандидатов прошел собес, все нормально, ничем не выделялся. Начали оформлять, и полезли звоночки.
Первым звоночком была опечатка в заявлении о приеме на работу. Человек написал “Прошу принять на должность инжИнера”. Я вот этот текст пишу, и у меня слово инжИнер подчеркнуто красным. Неужели в Ворде так сложно исправить?
Второй (и собственно последний) звоночек - выписка из электронной трудовой. Человек за 4 года сменил примерно 20 мест работы, работая везде от 2-х недель до 2-х месяцев. А последним местом работы было троллейбусное депо, и должность “Водитель троллейбусов”. Причем, компании, указанные в резюме на HeadHunter, вообще не совпадали с записями в трудовой. На вопрос “Что это, собственно, за Харитон Ульяна Йозеф Николай Яков?” внятных разъяснений не последовало, а посему в заключении трудового договора было отказано.
#мюсли
❤🔥1👍1
Про трудоустройство и работодателей
Регулярно читаю статьи про рынок труда на Хабре. Если вы читаете новости, то наверняка видели в ленте что-нибудь про "дефицит IT-специалистов", который достигает значений чуть ли не в 1-1.5 миллиона человек. С другой стороны, на том же Хабре регулярно выходят статьи про ненужность и неприкаянность специалистов уровня junior на рынке труда.
Ситуация как в анекдоте:
- Рядовой Иванов! Поднять танк!
- *Иванов пытается поднять танк* Товарищ прапорщик, поднять танк возможности не имею!
- Ну а что ты думал! 40 тонн!
Собственно, изучив разные материалы, иногда отражающие диаметрально противоположные точки зрения на вопрос, читатель нередко может остаться в замешательстве относительно своих шансов начать карьеру в IT.
Что тут хочется сказать:
1. Всё не прям вот хорошо, но и не то что бы очень плохо. Как в сериале "Чернобыль" - не отлично, но и не ужасно. Есть на рынке как небольшие компании, набирающие джунов за мелкий прайс, так и крупные, проводящие стажировки (иногда даже оплачиваемые).
2. Конкурировать всё равно придется. Рынок не резиновый, как бы вдруг не казалось обратное. Когда возникает вопрос о том, почему у айтишников нет своего профсоюза, то ответ звучит примерно так: "Зачем нужно защищать свои трудовые права специалисту, который за 2 недели может найти новую работу с той же ставкой, или выше?". А потом вдруг выясняется, что крупные работодатели могут проводить сокращения, что приводит к увеличению предложения на рынке, и конкурировать уже приходится не с аналогичными джуниорами, а с людьми, имеющими опыт работы.
3. Факт трудоустройства не есть гарантия того, что ваша карьера тут же пойдет в гору. По многим причинам. Особенность работы в IT - постоянно приходится разбираться в чем-то, с чем ранее не имел дела. Прошел, например, курс по C#, а надо еще и с базами данных уметь работать, и с API, и вообще что-то всё тормозит, посмотри в чем дело. Дело-то может быть в чем угодно, от неправильного MTU на сетевом интерфейсе роутера, или, например, вхлам устаревшем сервере, до rate limit`а на внешнем IP-адресе. Универсальный совет, как всегда, дать сложно, но всё же - ищите тестовые задания. На github есть целые репозитории с разбивкой по направлениям. Решайте, смотрите записи собеседований на аналогичные позиции, пусть даже с другими языками программирования. Часть вопросов пересекается, и нелишне будет пораскинуть мозгами на тему "А как это работает в том языке, который изучаю я?".
Если же вы смогли пробиться, вас зовут работать, и это не бигтех, а малый или средний бизнес, и у вас есть сомнения в благонадежности компании, то вот небольшой чеклист:
1. Проверьте компанию по ИНН\ОГРН. Поищите на сайтах-агрераторах информации о компаниях текущее состояние. Большинство сайтов предоставляет информацию за деньги, но можно найти интересующую информацию бесплатно.
Стоит обращать внимание на:
- Списочную численность. Если численность сотрудников не сходится с информацией от налоговой по данным агрегатора, и компания существует как минимум в течение нескольких лет - скорее всего сотрудники оформлены по ГПХ, либо как ИП. Тут следует понимать, что ИП\ГПХ не есть трудоустройство, и договор ГПХ с физ.лицом, или договор с ИП не равны трудовому договору (ТД). К трудовым отношениям (оформленным по ТД) применяются нормы Трудового кодекса, который защищает работника, например от невыплаты зарплаты. Если работодатель не выплачивает работнику зарплату 2 недели и более - можно прекращать работу, уведомив работодателя о вынужденном простое, по его же вине. В случае с ИП\ГПХ - идите в суд и там бодайтесь за свои деньги.
- Доход, прибыль. Базовая метрика, вообще-то. Доход - всё что заработали, прибыль = доход - расход. Если прибыть около нуля - это конечно не фонтан, но и не ужас. Компания на плаву. А вот если в графе "доход" по нулям, ну или там максимум на мороженное - это сразу ахтунг!
- Судебные дела. Тут можно посмотреть есть ли с кем-нибудь споры, в чем их суть, и как они решались.
Регулярно читаю статьи про рынок труда на Хабре. Если вы читаете новости, то наверняка видели в ленте что-нибудь про "дефицит IT-специалистов", который достигает значений чуть ли не в 1-1.5 миллиона человек. С другой стороны, на том же Хабре регулярно выходят статьи про ненужность и неприкаянность специалистов уровня junior на рынке труда.
Ситуация как в анекдоте:
- Рядовой Иванов! Поднять танк!
- *Иванов пытается поднять танк* Товарищ прапорщик, поднять танк возможности не имею!
- Ну а что ты думал! 40 тонн!
Собственно, изучив разные материалы, иногда отражающие диаметрально противоположные точки зрения на вопрос, читатель нередко может остаться в замешательстве относительно своих шансов начать карьеру в IT.
Что тут хочется сказать:
1. Всё не прям вот хорошо, но и не то что бы очень плохо. Как в сериале "Чернобыль" - не отлично, но и не ужасно. Есть на рынке как небольшие компании, набирающие джунов за мелкий прайс, так и крупные, проводящие стажировки (иногда даже оплачиваемые).
2. Конкурировать всё равно придется. Рынок не резиновый, как бы вдруг не казалось обратное. Когда возникает вопрос о том, почему у айтишников нет своего профсоюза, то ответ звучит примерно так: "Зачем нужно защищать свои трудовые права специалисту, который за 2 недели может найти новую работу с той же ставкой, или выше?". А потом вдруг выясняется, что крупные работодатели могут проводить сокращения, что приводит к увеличению предложения на рынке, и конкурировать уже приходится не с аналогичными джуниорами, а с людьми, имеющими опыт работы.
3. Факт трудоустройства не есть гарантия того, что ваша карьера тут же пойдет в гору. По многим причинам. Особенность работы в IT - постоянно приходится разбираться в чем-то, с чем ранее не имел дела. Прошел, например, курс по C#, а надо еще и с базами данных уметь работать, и с API, и вообще что-то всё тормозит, посмотри в чем дело. Дело-то может быть в чем угодно, от неправильного MTU на сетевом интерфейсе роутера, или, например, вхлам устаревшем сервере, до rate limit`а на внешнем IP-адресе. Универсальный совет, как всегда, дать сложно, но всё же - ищите тестовые задания. На github есть целые репозитории с разбивкой по направлениям. Решайте, смотрите записи собеседований на аналогичные позиции, пусть даже с другими языками программирования. Часть вопросов пересекается, и нелишне будет пораскинуть мозгами на тему "А как это работает в том языке, который изучаю я?".
Если же вы смогли пробиться, вас зовут работать, и это не бигтех, а малый или средний бизнес, и у вас есть сомнения в благонадежности компании, то вот небольшой чеклист:
1. Проверьте компанию по ИНН\ОГРН. Поищите на сайтах-агрераторах информации о компаниях текущее состояние. Большинство сайтов предоставляет информацию за деньги, но можно найти интересующую информацию бесплатно.
Стоит обращать внимание на:
- Списочную численность. Если численность сотрудников не сходится с информацией от налоговой по данным агрегатора, и компания существует как минимум в течение нескольких лет - скорее всего сотрудники оформлены по ГПХ, либо как ИП. Тут следует понимать, что ИП\ГПХ не есть трудоустройство, и договор ГПХ с физ.лицом, или договор с ИП не равны трудовому договору (ТД). К трудовым отношениям (оформленным по ТД) применяются нормы Трудового кодекса, который защищает работника, например от невыплаты зарплаты. Если работодатель не выплачивает работнику зарплату 2 недели и более - можно прекращать работу, уведомив работодателя о вынужденном простое, по его же вине. В случае с ИП\ГПХ - идите в суд и там бодайтесь за свои деньги.
- Доход, прибыль. Базовая метрика, вообще-то. Доход - всё что заработали, прибыль = доход - расход. Если прибыть около нуля - это конечно не фонтан, но и не ужас. Компания на плаву. А вот если в графе "доход" по нулям, ну или там максимум на мороженное - это сразу ахтунг!
- Судебные дела. Тут можно посмотреть есть ли с кем-нибудь споры, в чем их суть, и как они решались.
👍2
- Налоги и сборы. Вот тут можно примерно прикинуть среднюю зарплату. А некоторые сервисы ее даже за вас посчитают. Давайте для примера возьмем какую-нибудь организацию. Поищем информацию о ней в разных источниках. Что мы видим?
- Среднесписочная численность сотрудников: 1 человек. За всех бедняга пашет.
- Чистая прибыль\выручка: 0\0. Видимо сотрудник болел.
- Налоги и взносы: 1.54 тыс. руб. Примерно от 30% до 50% (примерно - потому что в налогах я такой же профи как и в жонглировании горящими медведями) вашей зарплаты работодатель платит в качестве взносов в ФСС\ПФР\и т.д. Получается (грубо), что ЗП+13% (НДФЛ)+30% (взносы) = полная стоимость сотрудника. Если 1054 рубля - это 30% зарплаты одного сотрудника, то 100% = (1054 * 30) / 100 = 3153. И минус 13% - 3056 рублей в месяц. А это значит, что если там больше одного сотрудника, то выплаты серые. И скорее всего нерегулярные, судя по дырке в графе "доходы".
Классная компания, да?
А если еще и по учредителям посмотреть, то выяснится, что открытых, и затем ликвидированных компаний там больше, чем вшей на уличной дворняге.
- Среднесписочная численность сотрудников: 1 человек. За всех бедняга пашет.
- Чистая прибыль\выручка: 0\0. Видимо сотрудник болел.
- Налоги и взносы: 1.54 тыс. руб. Примерно от 30% до 50% (примерно - потому что в налогах я такой же профи как и в жонглировании горящими медведями) вашей зарплаты работодатель платит в качестве взносов в ФСС\ПФР\и т.д. Получается (грубо), что ЗП+13% (НДФЛ)+30% (взносы) = полная стоимость сотрудника. Если 1054 рубля - это 30% зарплаты одного сотрудника, то 100% = (1054 * 30) / 100 = 3153. И минус 13% - 3056 рублей в месяц. А это значит, что если там больше одного сотрудника, то выплаты серые. И скорее всего нерегулярные, судя по дырке в графе "доходы".
Классная компания, да?
А если еще и по учредителям посмотреть, то выяснится, что открытых, и затем ликвидированных компаний там больше, чем вшей на уличной дворняге.
👍1
Среднее и медиана
Знаете, в чем разница между средним арифметическим и медианой? И какой из этих показателей что показывает? Есть известный анекдот, про колхоз, в котором председатель есть мясо, а все остальные только капусту. Зато в среднем все едят голубцы. Ну фигня же. Или с зарплатами. Один получает миллион, остальные по десять тысяч. В среднем, все почти миллионеры. Понимаете, да? Среднее арифметическое подвержено влиянию больших отклонений.
Что делать в таких случаях? Использовать перцентиль! Его еще процентилем называют, но мне моя версия больше нравится. Перцентиль - значение, которое случайная величина не превышает с указанной в процентах вероятностью. Объясню на примере с теми же зарплатами. Берем все зарплаты, заносим их в массив. Массив сортируем по возрастанию чисел. Берем значение среднего элемента массива.
Тут и так понятно, что значением будет 10'0000. Получается, что 50% людей в выборке имеет зарплату меньше, либо равную десяти тысячам. А остальные 50% больше, либо равную. Массив же отсортирован. Таким вот нехитрым образом мы нашли 50й перцентиль, его еще называют медианой. И вот теперь-то мы видим более реальную картину в распределении доходов по нашей выборке!
А если тот же самый показатель посчитать, например для 90% людей в выборке? Это будет 90-й перцентиль. Правда есть один нюанс. Если количество элементов в выборке таково, что нет возможности взять, например, средний, то значением перцентиля берется среднее арифметическое двух соседних элементов. То есть в массиве из 10-ти чисел 50-м перцентилем будет среднее арифметическое 5 и 6 элементов.
В нашем случае будет среднее арифметическое между 10'000 и 1'000'000, но ничего не поделаешь, такая уж тут выборка.
Я использовал перцентили, когда нужно было протестировать свои сервисы, и понять за какое время они в целом отработают на разных объемах данных. Алгоритм был таким:
1. Выбирались несколько сэмплов данных, разного объема. Например 1, 5, и 10 Мб.
2. Для каждого сэмпла выполнялось 100 запусков с замером времени.
3. По каждому сэмплу строились 50, 90, и 95 перцентили.
4. Итоги сводились в таблицу, где было видно, за какое время половина (50-й перцентиль) запросов обрабаботаются, а так же за какое время 90 и 95 процентов пользователей (90-й и 95-й перцентили соответственно, т.е. подавляющее большинство), смогут получить ответ.
Ну и без Python никуда! Используйте numpy, он тоже не лыком шит.
Знаете, в чем разница между средним арифметическим и медианой? И какой из этих показателей что показывает? Есть известный анекдот, про колхоз, в котором председатель есть мясо, а все остальные только капусту. Зато в среднем все едят голубцы. Ну фигня же. Или с зарплатами. Один получает миллион, остальные по десять тысяч. В среднем, все почти миллионеры. Понимаете, да? Среднее арифметическое подвержено влиянию больших отклонений.
Что делать в таких случаях? Использовать перцентиль! Его еще процентилем называют, но мне моя версия больше нравится. Перцентиль - значение, которое случайная величина не превышает с указанной в процентах вероятностью. Объясню на примере с теми же зарплатами. Берем все зарплаты, заносим их в массив. Массив сортируем по возрастанию чисел. Берем значение среднего элемента массива.
[10_000, 10_000, 10_000, 10_000, 1_000_000]
Тут и так понятно, что значением будет 10'0000. Получается, что 50% людей в выборке имеет зарплату меньше, либо равную десяти тысячам. А остальные 50% больше, либо равную. Массив же отсортирован. Таким вот нехитрым образом мы нашли 50й перцентиль, его еще называют медианой. И вот теперь-то мы видим более реальную картину в распределении доходов по нашей выборке!
А если тот же самый показатель посчитать, например для 90% людей в выборке? Это будет 90-й перцентиль. Правда есть один нюанс. Если количество элементов в выборке таково, что нет возможности взять, например, средний, то значением перцентиля берется среднее арифметическое двух соседних элементов. То есть в массиве из 10-ти чисел 50-м перцентилем будет среднее арифметическое 5 и 6 элементов.
В нашем случае будет среднее арифметическое между 10'000 и 1'000'000, но ничего не поделаешь, такая уж тут выборка.
Я использовал перцентили, когда нужно было протестировать свои сервисы, и понять за какое время они в целом отработают на разных объемах данных. Алгоритм был таким:
1. Выбирались несколько сэмплов данных, разного объема. Например 1, 5, и 10 Мб.
2. Для каждого сэмпла выполнялось 100 запусков с замером времени.
3. По каждому сэмплу строились 50, 90, и 95 перцентили.
4. Итоги сводились в таблицу, где было видно, за какое время половина (50-й перцентиль) запросов обрабаботаются, а так же за какое время 90 и 95 процентов пользователей (90-й и 95-й перцентили соответственно, т.е. подавляющее большинство), смогут получить ответ.
Ну и без Python никуда! Используйте numpy, он тоже не лыком шит.
np.percentile([1,2,3,4,5], 50)
np.percentile([1,2,3,4,5], 90)
np.percentile([1,2,3,4,5], 95)
👍2
Про демонов и петушар
Давно не писал, но тут жизнь подкидывает. Помните пост про некоего разработчика, кидающего заказчиков на деньги? Так вот, пишет мне сегодня еще один товарищ. Спрашивает, мол, ваш ли это гитхаб, и ваш ли это аккаунт телеграма. И тут и там dmitry8912, так что да, подтверждаю, что мой. "А что же вы мне не отвечаете? Деньги взяли, и дурачка включаете" - спрашивает человек.
И тут я понимаю, что ситуация повторяется один в один.
Если кратко - после первого случая указал на страничке в гитхабе свой аккаунт в телеграме, и написал в биографии, что у меня только один tg-аккаунт, а если кто-то другой выдает этот гитхаб за свой - то он мошенник. Написал, да не проверил, что в ссылке на аккаунт tg перепутал местами две буквы - вместо dmitry8912 написал dmirty8912. Чем собственно и воспользовался один нехороший человек.
Итак, пациент:
- @dmirty8912 - тут особое внимание на порядок букв
- @dm_copy - старый аккаунт
Дмитрий, как он сам себя называет, Копылов.
Суть развода следующая:
1. Жертва размещает заказ на какой-нибудь площадке (или в чате).
2. Жертве в ЛС приходит наш пациент, говорит, что возьмется за задачу, договаривается о деньгах.
3. Возможно наш пациент - гражданин РФ. Об этом косвенно свидетельствует то, что двое пострадавших, с которыми я общался, не были гражданами РФ. Оно и понятно, кидать заграничных заказчиков безопаснее, тем более что законы и МВД везде работают по-разному.
4. Пациент принимает оплату межбанковским переводом (одна известная мне карта обслуживается банком Уралсиб), либо в крипте (тут вообще без комментариев).
5. После получения оплаты происходит классический кидок в виде отсутствия ответов на сообщения, удаления чатов, и т.д.
Что тут сказать?
С одной стороны мне лично данный персонаж никакого ущерба не причинил. Оснований для обращения в то же МВД нет.
С другой стороны - неприятно, что вот так пользуются моим аккаунтом (а может и не только моим).
Каких-либо способов (кроме как попросить больше так не делать, конечно же это сработает, да) воздействия на пациента у меня по-сути нет.
Оставляю тут этот пост как предупреждение.
И, да, Дима Копылов, или как там тебя, с новым годом!
Прикрепляю пару скринов переписок с согласия автора.
Давно не писал, но тут жизнь подкидывает. Помните пост про некоего разработчика, кидающего заказчиков на деньги? Так вот, пишет мне сегодня еще один товарищ. Спрашивает, мол, ваш ли это гитхаб, и ваш ли это аккаунт телеграма. И тут и там dmitry8912, так что да, подтверждаю, что мой. "А что же вы мне не отвечаете? Деньги взяли, и дурачка включаете" - спрашивает человек.
И тут я понимаю, что ситуация повторяется один в один.
Если кратко - после первого случая указал на страничке в гитхабе свой аккаунт в телеграме, и написал в биографии, что у меня только один tg-аккаунт, а если кто-то другой выдает этот гитхаб за свой - то он мошенник. Написал, да не проверил, что в ссылке на аккаунт tg перепутал местами две буквы - вместо dmitry8912 написал dmirty8912. Чем собственно и воспользовался один нехороший человек.
Итак, пациент:
- @dmirty8912 - тут особое внимание на порядок букв
- @dm_copy - старый аккаунт
Дмитрий, как он сам себя называет, Копылов.
Суть развода следующая:
1. Жертва размещает заказ на какой-нибудь площадке (или в чате).
2. Жертве в ЛС приходит наш пациент, говорит, что возьмется за задачу, договаривается о деньгах.
3. Возможно наш пациент - гражданин РФ. Об этом косвенно свидетельствует то, что двое пострадавших, с которыми я общался, не были гражданами РФ. Оно и понятно, кидать заграничных заказчиков безопаснее, тем более что законы и МВД везде работают по-разному.
4. Пациент принимает оплату межбанковским переводом (одна известная мне карта обслуживается банком Уралсиб), либо в крипте (тут вообще без комментариев).
5. После получения оплаты происходит классический кидок в виде отсутствия ответов на сообщения, удаления чатов, и т.д.
Что тут сказать?
С одной стороны мне лично данный персонаж никакого ущерба не причинил. Оснований для обращения в то же МВД нет.
С другой стороны - неприятно, что вот так пользуются моим аккаунтом (а может и не только моим).
Каких-либо способов (кроме как попросить больше так не делать, конечно же это сработает, да) воздействия на пациента у меня по-сути нет.
Оставляю тут этот пост как предупреждение.
И, да, Дима Копылов, или как там тебя, с новым годом!
Прикрепляю пару скринов переписок с согласия автора.
😱3
Про геймдев
Вот есть у меня слово "геймдев" в названии канала, а постов про геймдев как бы и нету. Непорядок!
Дети 90-х, их еще называют "миллениалы", играли в Dendy, Sega, Playstation 1, и на ПК в компьютерных клубах. Эти игры были необычным развлечением, они приковывали внимание, давали эмоции. Помню, как играл в игры по мотивам фильма "Терминатор" на Dendy и Sega, очень любил играть в Dune 2: The battle for Arrakis, первая RTS как-никак.
Если я оставался дома, не шел в школу потому, что болел, то мама, уходя на работу убирала блок питания от приставки подальше, но я его находил, и успевал зарубиться в пару-тройку миссий до возвращения родителей. Играть мне (да и не только мне) очень нравилось. А когда у меня появился ПК - тут история приобрела совсем другой оборот. Игры для ПК были насыщеннее, интереснее. До сих пор время от времени перепрохожу Vampire the masquerade: Redemption. ПК давал разработчикам больше возможностей сделать красивую и интересную игру. Помню, когда нашел на базарчике с дисками игру “Блицкриг” - стратегию на тему второй мировой от российский разработчиков. Она была невероятна. 3D (хоть и псевдо 3D на самом-то деле) графика, взаправдашние танки, рычащие моторами, ползли по дорогам. Артиллерийский расчеты, суетясь у орудий, открывали огонь, и где-то там, на территории противника, скрытой туманом войны, гулко бухал очередной снаряд. И таких эпитетов, если углубиться в воспоминания, можно на целый сборник рассказов в стиле Пришвина написать.
В то время доступа в интернет у меня ещё не было, и узнать о новых играх, поиграть в них можно было в основном через друзей и друзей друзей. А ещё выпускались печатные журналы. Страна игр, Игромания, Лучшие компьютерные игры, Хакер, и чего-то там ещё. К ним прилагались диски с демо-версиями игр. Да и когда доступ в интернет появился - в нём ещё не было такой прорвы информации, сайтов, обзоров всего и вся.
Так вот, о чем это я - играть в компьютерные игры было и остается для меня сегодня классным способом провести время. А в детстве я мечтал, что вырасту, и буду сам делать игры! Но, ожидание != реальность.
Сегодня стать разработчиком игр может любой желающий. Да чего там, на Unity даже детей учат. С бесплатными ассетами из Unity Store и ChatGPT наперевес можно за некоторое время склепать что-то относительно играбельное.
Только вот проблема, что “что-то относительно играбельное” склёпано уже в разных вариациях всеми, кем только можно, не раз и не два. Ожидать, что новое видение какого-нибудь консольного тенниса “выстрелит”, так же логично, как и ожидать, что после написания Hello, World вас возьмут в Google с зарплатой 300к\наносек.
Я, в некотором роде, тоже жертва пропаганды. Начитавшись постов про “заработал мульён на Я.Играх” решил сделать свою игру. Правда ни с одним 3D-движком я не знаком. Зато набрел на интенсив от Skillbox, и по нему, кое-как, с помощью ChatGPT и такой-то матери, сделал что-то играбельное.
Правда, выкладывать не стал. Посмотрел на свой шедевр, да подумал “а кому будет в него интересно играть, если даже мне в него играть неинтересно?”.
Вывод: сделать игру 20 лет назад было сложно, потому что требовались специфические знания. Сегодня порог входа ниже, тот же Unity не предъявляет каких-то сверхъестественных требований к разработчикам (правда, в результате из-за неполного понимания того, как и что работает, даже крестики-нолики могут занимать 1ГБ), а вот потребители игр должны заинтересоваться.
Напоследок рекомендую прочитать книгу “Кровь, пот и пиксели”, про то, как люди реально работают в индустрии создания видеоигр. Интереснейшее чтиво.
Вот есть у меня слово "геймдев" в названии канала, а постов про геймдев как бы и нету. Непорядок!
Дети 90-х, их еще называют "миллениалы", играли в Dendy, Sega, Playstation 1, и на ПК в компьютерных клубах. Эти игры были необычным развлечением, они приковывали внимание, давали эмоции. Помню, как играл в игры по мотивам фильма "Терминатор" на Dendy и Sega, очень любил играть в Dune 2: The battle for Arrakis, первая RTS как-никак.
Если я оставался дома, не шел в школу потому, что болел, то мама, уходя на работу убирала блок питания от приставки подальше, но я его находил, и успевал зарубиться в пару-тройку миссий до возвращения родителей. Играть мне (да и не только мне) очень нравилось. А когда у меня появился ПК - тут история приобрела совсем другой оборот. Игры для ПК были насыщеннее, интереснее. До сих пор время от времени перепрохожу Vampire the masquerade: Redemption. ПК давал разработчикам больше возможностей сделать красивую и интересную игру. Помню, когда нашел на базарчике с дисками игру “Блицкриг” - стратегию на тему второй мировой от российский разработчиков. Она была невероятна. 3D (хоть и псевдо 3D на самом-то деле) графика, взаправдашние танки, рычащие моторами, ползли по дорогам. Артиллерийский расчеты, суетясь у орудий, открывали огонь, и где-то там, на территории противника, скрытой туманом войны, гулко бухал очередной снаряд. И таких эпитетов, если углубиться в воспоминания, можно на целый сборник рассказов в стиле Пришвина написать.
В то время доступа в интернет у меня ещё не было, и узнать о новых играх, поиграть в них можно было в основном через друзей и друзей друзей. А ещё выпускались печатные журналы. Страна игр, Игромания, Лучшие компьютерные игры, Хакер, и чего-то там ещё. К ним прилагались диски с демо-версиями игр. Да и когда доступ в интернет появился - в нём ещё не было такой прорвы информации, сайтов, обзоров всего и вся.
Так вот, о чем это я - играть в компьютерные игры было и остается для меня сегодня классным способом провести время. А в детстве я мечтал, что вырасту, и буду сам делать игры! Но, ожидание != реальность.
Сегодня стать разработчиком игр может любой желающий. Да чего там, на Unity даже детей учат. С бесплатными ассетами из Unity Store и ChatGPT наперевес можно за некоторое время склепать что-то относительно играбельное.
Только вот проблема, что “что-то относительно играбельное” склёпано уже в разных вариациях всеми, кем только можно, не раз и не два. Ожидать, что новое видение какого-нибудь консольного тенниса “выстрелит”, так же логично, как и ожидать, что после написания Hello, World вас возьмут в Google с зарплатой 300к\наносек.
Я, в некотором роде, тоже жертва пропаганды. Начитавшись постов про “заработал мульён на Я.Играх” решил сделать свою игру. Правда ни с одним 3D-движком я не знаком. Зато набрел на интенсив от Skillbox, и по нему, кое-как, с помощью ChatGPT и такой-то матери, сделал что-то играбельное.
Правда, выкладывать не стал. Посмотрел на свой шедевр, да подумал “а кому будет в него интересно играть, если даже мне в него играть неинтересно?”.
Вывод: сделать игру 20 лет назад было сложно, потому что требовались специфические знания. Сегодня порог входа ниже, тот же Unity не предъявляет каких-то сверхъестественных требований к разработчикам (правда, в результате из-за неполного понимания того, как и что работает, даже крестики-нолики могут занимать 1ГБ), а вот потребители игр должны заинтересоваться.
Напоследок рекомендую прочитать книгу “Кровь, пот и пиксели”, про то, как люди реально работают в индустрии создания видеоигр. Интереснейшее чтиво.
👍4
Media is too big
VIEW IN TELEGRAM
Про мини-курс
Так, я ж тут пару курсов запилить собрался! И один даже начал делать! Курс будет про создание своего мессенджера с помощью Python и Quasar Framework.
За несколько уроков разберем:
- Как работают веб-приложения
- Сделаем фронт мессенджера на Quasar Framework
- Сделаем бэк на Python с помощью FastAPI
- Прикрутим к бэку СУБД (PostgreSQL) и добавим шифрование сообщений
Сейчас у меня на 80% готов первый урок. Его осталось озвучить - а мне всё время свой голос не нравится.
Поэтому пока что держите спидран первого урока.
Так, я ж тут пару курсов запилить собрался! И один даже начал делать! Курс будет про создание своего мессенджера с помощью Python и Quasar Framework.
За несколько уроков разберем:
- Как работают веб-приложения
- Сделаем фронт мессенджера на Quasar Framework
- Сделаем бэк на Python с помощью FastAPI
- Прикрутим к бэку СУБД (PostgreSQL) и добавим шифрование сообщений
Сейчас у меня на 80% готов первый урок. Его осталось озвучить - а мне всё время свой голос не нравится.
Поэтому пока что держите спидран первого урока.
🔥4👍1
Про информационную безопасность
Я вообще чего на информационную безопасность учится пошел? Конечно же, в надежде, что из меня там хакера сделают, крутого до жути. Ну, вышло как вышло, в общем.
Помню, еще в школе, кто-то из одноклассников принес распечатки статей про Linux (это ж операционная система для хакеров!). А в журнале Хакер каждая статья, как булочка, щедро посыпанная кунжутом, была также щедро сдобрена словечками “ламер”, “прокся”, “хэндл”, и другими, вызывающими благоговейный трепет, при полном отсутствии понимания значений этих слов.
Когда что-то запретно - оно всегда интересно, и хочется такими навыками овладеть (нет, не чтобы хулиганить, а так, для общего развития).
Что тут можно посоветовать? Есть несколько бесплатных ресурсов:
- https://www.hackthebox.com/ - образовательный ресурс, позволяющий вам в живом режиме потренироваться что-то взламывать, такой codewars для хакеров.
- https://crackmes.one/ - крякмисы. Программы, созданные, чтобы их взломали. Я и сам про парочку несложных писал тут и тут.
- https://cryptohack.org/ - криптография. По-сути направленный больше на понимание использующихся сегодня криптографических системы ресурс. Однако, от этого не менее интересный.
Я вообще чего на информационную безопасность учится пошел? Конечно же, в надежде, что из меня там хакера сделают, крутого до жути. Ну, вышло как вышло, в общем.
Помню, еще в школе, кто-то из одноклассников принес распечатки статей про Linux (это ж операционная система для хакеров!). А в журнале Хакер каждая статья, как булочка, щедро посыпанная кунжутом, была также щедро сдобрена словечками “ламер”, “прокся”, “хэндл”, и другими, вызывающими благоговейный трепет, при полном отсутствии понимания значений этих слов.
Когда что-то запретно - оно всегда интересно, и хочется такими навыками овладеть (нет, не чтобы хулиганить, а так, для общего развития).
Что тут можно посоветовать? Есть несколько бесплатных ресурсов:
- https://www.hackthebox.com/ - образовательный ресурс, позволяющий вам в живом режиме потренироваться что-то взламывать, такой codewars для хакеров.
- https://crackmes.one/ - крякмисы. Программы, созданные, чтобы их взломали. Я и сам про парочку несложных писал тут и тут.
- https://cryptohack.org/ - криптография. По-сути направленный больше на понимание использующихся сегодня криптографических системы ресурс. Однако, от этого не менее интересный.
Hack The Box
Cyber Mastery: Community Inspired. Enterprise Trusted.
We raise your cyber resilience by transforming technical teams into a mission-ready workforce, so every organization can stay ahead of tomorrow’s threats. Get started now with personal or team plans.
🔥2
Media is too big
VIEW IN TELEGRAM
Мини-курс, урок #1
Наконец-то у меня дошли руки озвучить и склеить видео первого урока!
Повторю, что будет в этом курсе. За несколько занятий мы реализуем фронт и бэк простого мессенджера. Клиентскую часть реализуем на Quasar Framework, бэк на FastAPI (Python). Добавим PostgreSQL для хранения сообщений.
Несмотря на то, что я уже более 3-х лет являюсь преподавателем в ОТУС, и, если честно, к бОльшей части занятий уже и не готовлюсь, поскольку знания, как говорят, уже "в пальцах", тут пришлось попотеть.
Конечно, результаты оценивать только вам. Поэтому, мне будет интересно, если вы расскажете о своих впечатлениях от этого урока. Что получилось, что не получилось, что было непонятно.
Для тех, кто будет делать Д\З(пишите в комментарии "буду делать Д\З") - отвечу на все ваши вопросы, и постараюсь помочь в случае проблем. Пишите в комментариях под этим постом.
Исходный код проекта лежит здесь.
Наконец-то у меня дошли руки озвучить и склеить видео первого урока!
Повторю, что будет в этом курсе. За несколько занятий мы реализуем фронт и бэк простого мессенджера. Клиентскую часть реализуем на Quasar Framework, бэк на FastAPI (Python). Добавим PostgreSQL для хранения сообщений.
Несмотря на то, что я уже более 3-х лет являюсь преподавателем в ОТУС, и, если честно, к бОльшей части занятий уже и не готовлюсь, поскольку знания, как говорят, уже "в пальцах", тут пришлось попотеть.
Конечно, результаты оценивать только вам. Поэтому, мне будет интересно, если вы расскажете о своих впечатлениях от этого урока. Что получилось, что не получилось, что было непонятно.
Для тех, кто будет делать Д\З
Исходный код проекта лежит здесь.
🔥4❤1👍1
Media is too big
VIEW IN TELEGRAM
Codewars
Я как-то уже публиковал разборы задачек на Codewars, но писать текст, а особенно длинный - то еще мучение. Голосом и с демонстрацией поинтереснее будет.
Сегодня разобрал несколько простых задач, чтобы вам было чем заняться, пока я готовлю второй урок мини-курса.
Я как-то уже публиковал разборы задачек на Codewars, но писать текст, а особенно длинный - то еще мучение. Голосом и с демонстрацией поинтереснее будет.
Сегодня разобрал несколько простых задач, чтобы вам было чем заняться, пока я готовлю второй урок мини-курса.
🔥4👍1
Канал на x-tube
Не, тут x не в плане черно-оражневого ютуба (хотя было бы прикольно), а в плане того, что видео в телеграмме не очень удобно искать, поэтому сделал себе канал на Rutube (YouTube те еще перцы, нельзя ссылки в описание к видео прикладывать пока не наберется энное кол-во подписчиков).
Там же оставлю и видео по курсу. Кстати, для курса сделал отдельную группу. Если делаете Д\З, повторяете показанное в видео - велком туда, там же можете задавать вопросы в случае, если что-то не понятно, или не получается воспроизвести.
Не, тут x не в плане черно-оражневого ютуба (хотя было бы прикольно), а в плане того, что видео в телеграмме не очень удобно искать, поэтому сделал себе канал на Rutube (YouTube те еще перцы, нельзя ссылки в описание к видео прикладывать пока не наберется энное кол-во подписчиков).
Там же оставлю и видео по курсу. Кстати, для курса сделал отдельную группу. Если делаете Д\З, повторяете показанное в видео - велком туда, там же можете задавать вопросы в случае, если что-то не понятно, или не получается воспроизвести.
👍1🔥1
dev-io.ru
Отмывание часов
Мне правда очень не хочется, чтобы эта статья выглядела как среднестатистическая дипломная работа выпускника специальности “Что-то там с чем-то, но точно есть слово “экономика” или “экономический\ая\ие”, где воды во введении больше, чем во всем мировом океане…
То, о чем нельзя писать.
Давно хотел написать статью на эту тему, но все не доходили руки. Вот дошли.
Строго 18+
Disclaimer:
Все совпадения случайны.
Все обстоятельства вымышлены.
Давно хотел написать статью на эту тему, но все не доходили руки. Вот дошли.
Строго 18+
Disclaimer:
Все совпадения случайны.
Все обстоятельства вымышлены.
🔥2