Получи случайную криптовалюту за регистрацию!

Geeks

Логотип телеграм канала @g33ks — Geeks G
Логотип телеграм канала @g33ks — Geeks
Адрес канала: @g33ks
Категории: Технологии
Язык: Русский
Количество подписчиков: 9.76K
Описание канала:

От гиков гикам!
Пишем о происходящем в информационных технологиях.
@shpaker и @qqalexqq

Рейтинги и Отзывы

2.50

2 отзыва

Оценить канал g33ks и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

1

3 звезд

0

2 звезд

0

1 звезд

1


Последние сообщения 2

2022-08-17 20:21:04 Всё больше пользователей стримингов отписываются от них в течение нескольких месяцев после первоначальной подписки. Так, по статистике, 19% людей за последние два года отписались от трех и более крупных сервисов просмотра видео (а их всего пять), а раньше этот показатель был всего 6%. Конечно, нужно учитывать, что стримингов стало больше - двумя годами ранее их было не пять, а три и теперь люди часто следуют логике: "сегодня сериал досмотрю, а завтра переподпишусь на другой сервис". Но то, что подписка на сервис стала вещью непостоянной, вселяет всё меньше уверенности компаниям в том, что надо вкладывать большие деньги в свои проекты - тот же Netflix уже говорил, что будет больше вкладываться в кино со скромными бюджетами.

Как один из факторов отписок нужно учитывать и цены на стримингах - большинство из них стали брать больше денег, отменили льготные тарифы, а контента не стало в разы больше. Также окончание пандемии ознаменовалось тем, что снова можно ходить в кинотеатры, да и вообще выходить из дома - не нужно искать чем занять время сидя дома. Интересно, как будет с подписками на программы, ведь раньше предрекали, что именно за счёт ежемесячной оплаты разработчики смогут продолжать развивать выпущенный софт и он будет стабильно приносить им деньги. Не получится ли тут как со стримингами и после подписки на десяток программ люди начнут брать их на пару месяцев, а дальше массово отписываться? https://www.wsj.com/articles/streaming-services-deal-with-growing-number-of-subscribers-who-watch-cancel-and-go-11660557601
5.4K viewsAleksandr Mikheev, 17:21
Открыть/Комментировать
2022-08-15 11:05:55 В последнее время стараюсь пробегать статанализаторами по файлам всех форматов в репозитории. На локальном хосте проверки осуществляю pre-commit’ом, а не локально - GitLab’ом. И каждый раз радуюсь как дитя, встречая в новостных лентах упоминания о новых линтерах. Сегодня утром прочитал об утилите checkmake для проверки Make-файлов. В описании репозитория указано, что инструмент “эксперементальный”, ну и даже без этой подписи складывается впечатление, что инструмент очень свежий, и еще не достаточно обкатан в боевых условиях. Но уже выглядит достаточно интересно. Поставил звёздочку и буду смотреть, на дальнейшую судьбу этого маленького проекта.

Шах и мат, мейк-файлы https://github.com/mrtazz/checkmake
5.9K viewsshpaker, 08:05
Открыть/Комментировать
2022-08-08 17:15:17 Яндекс запустил технологию перевода прямых трансляций на YouTube в открытое бета-тестирование.

Нейросети обрабатывают потоковое видео с небольшой задержкой и озвучивают спикеров сразу по-русски. Так как технология еще обкатывается, то можно её попробовать на некоторых YouTube-каналах (например, здесь). Работает все через пк версию браузера Яндекса.

Мне сразу вспомнилась вавилонская рыбка из произведений Адама Дугласа, которая даже в моем детстве казалась чем-то фантастическим из далекого далекого будущего. Вавилонская рыбка забиралась в ухо своего владельца и переводила все, что он мог услышать, на понятный ему язык. Эта фича даже круче вавилонской рыбки.

За потоковый перевод в браузере Яндекса отвечают пять нейросетей. Первая распознает речь и переводит ее в текст, вторая по биометрии определяет, кто говорит – мужчина или женщина. Третья – нарезает расставляет в тексте знаки препинания и нарезает его на смысловые фрагменты, чтобы отдать их на вход четвертой нейросети, которая отвечает за перевод. Пятая – синтезирует озвучку на русском языке. Если хотите подробнее, читайте пост на хабре.

Пока технология еще тестируется на YouTube-стримах, но команда Яндекс браузера планирует запустить ее и на Twitch.
7.1K viewsA. Shpak, 14:15
Открыть/Комментировать
2022-08-08 17:15:11 Baidu получила первое разрешение в Китае на полноценный запуск такси без водителя и сразу в двух городах. Из ограничений: работать им можно только днём, на территории 13 квадратных километров в Ухане и 30 квадратных километрах в Чунцине. Учитывая, что города довольно крупные (там живёт больше 20 миллионов жителей), тест должен получиться масштабным, а в случае успеха должны будут добавляться и новые территории.

В компании со своей стороны заверяют, что их роботакси максимально безопасны - всё железо в бортовых системах дублировано, есть возможность удалённого управления машиной, а автопилот настроен таким образом, чтобы минимизировать любые риски аварий. Учитывая, что Baidu также тестирует свои роботакси и в США, с разрешением работы в Китае они становятся очень значительным игроком на этом рынке. https://www.engadget.com/baids-robotaxi-safety-driver-china-autonomous-self-driving-020024214.html
6.1K viewsAleksandr Mikheev, 14:15
Открыть/Комментировать
2022-08-03 09:41:45 Часть 2

Генерация векторного изображения

Самый простой способ вывести изображение, состоящее из примитивов, это ручками слепить данные для SVG, и сохранить их в файл. SVG представляет из себя обычный XML. Я быстро сделал Jinja2-шаблон и циклом в нем нарисовал необходимые прямоугольники. Потом почесал затылок и решил, что Jinja2 всё таки пакет сторонний, а хочется свести количество зависимостей к нулю (спойлер: у меня так не выйдет).

Заглянем в будущее и рассмотрим фрагмент XML-файла, который у нас должен получиться:








Кажется, что комментировать тут особо и нечего - сначала рисуем один прямоугольник во всю величину аватарки. А затем на ней начинаем рисовать прямоугольники второго цвета.

Итак, даже тщательно не вглядываясь в XML можно приметить, что условно данные можно разделить на две части:

- Основной блок в котором мы задаем размер области видимости. То есть главный прямоугольник в который и будет вписана аватарка. И в этот блок мы вписываем сгенерированные прямоугольники. Зададим значение вот такой чудесной строкой:

SVG_WRAPPER = """

{rects}

"""

- И множество блоков прямоугольников, которые будут генерироваться из вот такой строки:

SVG_RECT_TAG = '

Для получения готовых к использованию фрагментов XML будем использовать format для подмены значений в строках. И теперь мы можем написать функцию для создания svg-тега прямоугольника:

def make_svg_cell(
x: int,
y: int,
offset: int,
size: int,
color: Optional[str],
) -> str:
return SVG_RECT_TAG.format(
x=x*size+offset,
y=y*size+offset,
size=size,
color=color,
)

И пробежав по списку со списками сырых значений мы можем сгенерировать все прямоугольники и подставить их в строку SVG_WRAPPER. Готовая функция примет следующий вид:

def make_svg_data(
data: List[List[bool]],
cell_size: int,
offset: int,
first_color: Optional[str],
second_color: Optional[str],
) -> str:
box_size = len(data) * cell_size + 2 * offset
box = make_svg_cell(
x=0,
y=0,
offset=0,
size=box_size,
color=first_color,
)
rects: List[str] = [box]
for y, row in enumerate(data):
for x, cell in enumerate(row):
if not cell:
continue
rect = make_svg_cell(
x=x,
y=y,
offset=offset,
size=cell_size,
color=second_color,
)
rects.append(rect)
svg_xml = SVG_WRAPPER.format(
rects="\\n".join(rects),
size=box_size,
color=first_color,
)
return svg_xml


И завершающий шаг, на котором можно проверить результат работы скрипта:

data = generate_data()
svg = make_svg_data(data, cell_size=16, offset=8, first_color="#fff", second_color="#f6f")
with open("test.svg", "w") as file:
file.write(data)

Теперь можно открыть файл и полюбоваться на сгенеренное. Если хочется растровое изображение, то самый простой способ его получить - конвертнув его из SVG (на pypi можно найти пакет CairoSVG, но в системе должна стоять либа cairo).
3.1K viewsA. Shpak, edited  06:41
Открыть/Комментировать
2022-08-03 09:38:52 Часть первая

Подготовительные работы

Итак, первое, что делаем - пишем функцию, которая (внезапно) отдаёт нам случайное булевое значение:

from random import random

def random_bool() -> bool:
return random() < 0.5

Пожалуй, на этой славной ноте и закончим подготовительные работы. Булево значение для нас будет индикатором того, закрашена ли точка на изображении или все-таки нет.

Генерация необходимых данных

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

def generate_row(
cells_count: int,
) -> List[bool]:
return [random_bool() for _ in range(cells_count)]

Не то чтоб я каждую строку кода хочу выносить в отдельную функцию, но пока мне так больше нравится. Итак, шажок номер три, чтоб немного приблизиться к величию GitHub, нам необходимо генерировать три блока с данными, а затем склеивать их. Очевидно, что мы можем написать функцию, которая будет принимать целочисленное количество рядов в сетке значений и количество точек в этих рядах. Будем ожидать, что данная функция нам будет отдавать список из списков булевых значений:

def generate_block(
width: int,
height: int,
) -> List[List[bool]]:
return [generate_row(width) for _ in range(height)]

Теперь мы можем создать левый и центральный блок. Для правого блока нам ничего нового не нужно, а достаточно просто отзеркалить левый блок.

И вот, свет увидела еще одна функция в одну строчку:

def reverse_block(
block: List[List[bool]],
) -> List[List[bool]]:
return [list(reversed(i)) for i in block]

Теперь мы можем сгенерировать все три части изображения. Вот приблизительно как-то так:

left = generate_block(width=cells_count // 2, height=cells_count)
spacer = generate_block(width=cells_count % 2, height=cells_count)
right = reverse_block(left)

Очевидно, что нам надо как-то их соединить, и для этого мы напишем вот такую функцию:

def concatenate_blocks(
left: List[List[bool]],
spacer: List[List[bool]],
right: List[List[bool]],
) -> List[List[bool]]:
result = list()
for i, left_row in enumerate(left):
right_row = right[i]
spacer_row = spacer[i]
line = [*left_row, *spacer_row, *right_row]
result.append(line)
return result

И вуаля!

def generate_data(
cells_count: int = 5,
) -> List[List[bool]]:
left = generate_block(width=cells_count // 2, height=cells_count)
spacer = generate_block(width=cells_count % 2, height=cells_count)
right = reverse_block(left)
return concatenate_blocks(left, spacer, right)

Можно запустить данную функцию и вывести результат каким-то таким образом:

>>> from pprint import pprint
>>> data = generate_data()
>>> pprint(data)
[[False, True, True, True, False],
[False, True, False, True, False],
[False, True, True, True, False],
[False, True, True, True, False],
[True, False, False, False, True]]

Запускаем и любуемся на полученный результат из пяти списков. Во время просмотра результата работы скрипта задумываемся над тем, что нам нужна была картинка, а не вот это вот все, что есть на экране, и продолжаем писать код.

Пока, в сугубо отладочных целях, напишем страшенную функцию для быстрой визуализации такого списка, один раз её прогоним и забудем её как страшный сон:

>>> def data_to_str(data: List[List[bool]]) -> str:
>>> return "\\n".join(list("".join(list(map(lambda x: "#" if x else " ", row))) for row in data))
>>> print(data)
###
# #
###
###
# #
2.3K viewsA. Shpak, 06:38
Открыть/Комментировать
2022-08-03 09:38:13
Генерилка аватарок на коленке аля GitHub в двух частях

Года полтора назад написал этот материал и сегодня его случайно нашел. Видимо думал на Хабр запостить, но в итоге показалось, что проект вышел слишком простым :)

Вместо предисловия

Давече прикручивал аватарки для пользователей на одном из проектов. И все бы ничего, но показалось достаточно скучным вставлять картинку-заглушку пользователям, которые не удосужились сами себе выставить изображение.

А так как я использую GitHub, то сразу в голову прилетела идея приватизировать идею простой генерации аватарок. Рассмотрев аватарку можно заметить, что условно она делится на четыре части:

- Левый блок шириной 2 точки слева
- Центральный блок в одну точку шириной
- И блок справа, который зеркалит тот самый первый блок шириной в две точки
- Рамка вокруг блоков шириной в половину точки

PS: Тем кому лень читать получите GitHub https://github.com/shpaker/tiny-userpic

PPS: писалось все за пару часов и я не особо заморачивался за красивый и оптимальное код :)
5.2K viewsA. Shpak, edited  06:38
Открыть/Комментировать
2022-08-01 21:09:37 Один из крупных стартапов в США по аренде электросамокатов и электровелосипедов Bolt Mobility (названный в честь сооснователя Усейна Болта) закрыл своё присутствие как минимум в пяти городах, а возможно даже полностью закрывается. Причём интересно, насколько внезапно можно прекратить бизнес с внушительным имуществом и штатом сотрудников. В начале июля компания ещё полностью функционировала и никто не сообщал о каких-то проблемах, а к концу месяца городские власти уже не могут связаться с кем-либо в компании, включая CEO.

На email и в поддержке никто не отвечает, но в некоторых городах остались представители, которые утверждают, что деятельность не прекращается. В городах в спешке были оставлены сотни, если не тысячи самокатов с пустыми аккумуляторами, а также другое оборудование. В каком формате и будет ли работать компания в будущем - загадка, но то, как стартап может в одночасье испариться - впечатляет. https://techcrunch.com/2022/07/31/bolt-mobility-has-vanished-leaving-e-bikes-unanswered-calls-behind-in-several-us-cities/
6.3K viewsAleksandr Mikheev, 18:09
Открыть/Комментировать
2022-07-11 11:45:32
Оффер для бэкенд-разработчиков уже в пути

30-31 июля Яндекс проводит Weekend Offer — мероприятие, на котором вы сможете получить оффер в Яндекс за два дня.

У вас есть опыт коммерческой разработки от 3-х лет на Java / C++ / Python? Отлично! Регистрируйтесь на сайте, решайте задачи отборочного этапа и 30 июля участвуйте в онлайн-секциях — на них вам предложат несколько задач, в зависимости от вашего опыта.

Если все пройдет хорошо, уже 31 июля вы получите оффер и сможете присоединиться к одной из команд Яндекса.

Задачи предварительного этапа доступны до 23:59 27 июля, а материалы для подготовки вы сможете найти здесь
4.3K viewsA. Shpak, 08:45
Открыть/Комментировать
2022-07-08 15:00:34
Станьте Android-разработчиком и создайте своё первое приложение!

На курсе от Skillbox «Профессия Android-разработчик» https://clc.to/GKva-A вы освоите востребованные навыки и соберёте портфолио из пяти приложений. Сможете работать в компании, агентстве или брать заказы на фрилансе.

Опытные кураторы помогут вам стать специалистом, а карьерный отдел поможет с трудоустройством.

Не упустите возможность начать карьеру в одной из самых востребованных IT-профессий!
4.1K viewsA. Shpak, 12:00
Открыть/Комментировать