Geeks
8.15K subscribers
275 photos
19 videos
1.09K links
От гиков гикам!
Пишем о происходящем в информационных технологиях.

@shpaker и @qqalexqq
Download Telegram
История с TikTok в США продолжается - глава федеральной комиссии по связи США обратился в Apple и Google, чтобы те удалили приложение из своих магазинов. По данным расследований оно собирает уйму чувствительной информации о пользователях и все эти данные передаются в Китай, где, по закону, доступны правительству поднебесной. В TikTok в свою очередь утверждают, что начали миграцию серверов в Oracle Cloud и собираются нанять отдельный менеджмент для своей американской компании, которая должна будет работать отдельно от Китая. Что интересно, все эти действия озвучиваются не впервые - это уже было сказано во времена Трампа (2020 год) и тогда всё закончилось тем, что компания отстояла нахождение в магазинах приложений через суд. https://techcrunch.com/2022/06/28/fcc-commissioner-writes-to-apple-and-google-about-removing-tiktok/
👍3
Станьте Android-разработчиком и создайте своё первое приложение!

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

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

Не упустите возможность начать карьеру в одной из самых востребованных IT-профессий!
Оффер для бэкенд-разработчиков уже в пути 🚨

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

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

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

Задачи предварительного этапа доступны до 23:59 27 июля, а материалы для подготовки вы сможете найти 👉здесь
👍1
Один из крупных стартапов в США по аренде электросамокатов и электровелосипедов Bolt Mobility (названный в честь сооснователя Усейна Болта) закрыл своё присутствие как минимум в пяти городах, а возможно даже полностью закрывается. Причём интересно, насколько внезапно можно прекратить бизнес с внушительным имуществом и штатом сотрудников. В начале июля компания ещё полностью функционировала и никто не сообщал о каких-то проблемах, а к концу месяца городские власти уже не могут связаться с кем-либо в компании, включая CEO.

На email и в поддержке никто не отвечает, но в некоторых городах остались представители, которые утверждают, что деятельность не прекращается. В городах в спешке были оставлены сотни, если не тысячи самокатов с пустыми аккумуляторами, а также другое оборудование. В каком формате и будет ли работать компания в будущем - загадка, но то, как стартап может в одночасье испариться - впечатляет. https://techcrunch.com/2022/07/31/bolt-mobility-has-vanished-leaving-e-bikes-unanswered-calls-behind-in-several-us-cities/
👍4😱4
Генерилка аватарок на коленке аля GitHub в двух частях

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

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

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

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

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

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

PPS: писалось все за пару часов и я не особо заморачивался за красивый и оптимальное код :)
5
Часть первая

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

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

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)
###
# #
###
###
# #
👍6🤡1
Часть 2

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

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

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

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="<http://www.w3.org/2000/svg>" viewBox="0, 0, 64, 64">
<rect x="0" y="0" width="64" height="64" style="fill:#933" />
<rect x="32" y="0" width="32" height="64" style="fill:#393" />
</svg>



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

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

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

SVG_WRAPPER = """<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="<http://www.w3.org/2000/svg>" viewBox="0, 0, {width}, {height}">
{rects}
</svg>
"""


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

SVG_RECT_TAG = '<rect x="{x}" y="{y}" width="{width}" height="{height}" style="fill:{color}" />

Для получения готовых к использованию фрагментов 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).
👍91😢1
Baidu получила первое разрешение в Китае на полноценный запуск такси без водителя и сразу в двух городах. Из ограничений: работать им можно только днём, на территории 13 квадратных километров в Ухане и 30 квадратных километрах в Чунцине. Учитывая, что города довольно крупные (там живёт больше 20 миллионов жителей), тест должен получиться масштабным, а в случае успеха должны будут добавляться и новые территории.

В компании со своей стороны заверяют, что их роботакси максимально безопасны - всё железо в бортовых системах дублировано, есть возможность удалённого управления машиной, а автопилот настроен таким образом, чтобы минимизировать любые риски аварий. Учитывая, что Baidu также тестирует свои роботакси и в США, с разрешением работы в Китае они становятся очень значительным игроком на этом рынке. https://www.engadget.com/baids-robotaxi-safety-driver-china-autonomous-self-driving-020024214.html
👍6🔥1
Яндекс запустил технологию перевода прямых трансляций на YouTube в открытое бета-тестирование.

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

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

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

Пока технология еще тестируется на YouTube-стримах, но команда Яндекс браузера планирует запустить ее и на Twitch.
🔥6👍2😢1
В последнее время стараюсь пробегать статанализаторами по файлам всех форматов в репозитории. На локальном хосте проверки осуществляю pre-commit’ом, а не локально - GitLab’ом. И каждый раз радуюсь как дитя, встречая в новостных лентах упоминания о новых линтерах. Сегодня утром прочитал об утилите checkmake для проверки Make-файлов. В описании репозитория указано, что инструмент “эксперементальный”, ну и даже без этой подписи складывается впечатление, что инструмент очень свежий, и еще не достаточно обкатан в боевых условиях. Но уже выглядит достаточно интересно. Поставил звёздочку и буду смотреть, на дальнейшую судьбу этого маленького проекта.

Шах и мат, мейк-файлы https://github.com/mrtazz/checkmake
👍7
Всё больше пользователей стримингов отписываются от них в течение нескольких месяцев после первоначальной подписки. Так, по статистике, 19% людей за последние два года отписались от трех и более крупных сервисов просмотра видео (а их всего пять), а раньше этот показатель был всего 6%. Конечно, нужно учитывать, что стримингов стало больше - двумя годами ранее их было не пять, а три и теперь люди часто следуют логике: "сегодня сериал досмотрю, а завтра переподпишусь на другой сервис". Но то, что подписка на сервис стала вещью непостоянной, вселяет всё меньше уверенности компаниям в том, что надо вкладывать большие деньги в свои проекты - тот же Netflix уже говорил, что будет больше вкладываться в кино со скромными бюджетами.

Как один из факторов отписок нужно учитывать и цены на стримингах - большинство из них стали брать больше денег, отменили льготные тарифы, а контента не стало в разы больше. Также окончание пандемии ознаменовалось тем, что снова можно ходить в кинотеатры, да и вообще выходить из дома - не нужно искать чем занять время сидя дома. Интересно, как будет с подписками на программы, ведь раньше предрекали, что именно за счёт ежемесячной оплаты разработчики смогут продолжать развивать выпущенный софт и он будет стабильно приносить им деньги. Не получится ли тут как со стримингами и после подписки на десяток программ люди начнут брать их на пару месяцев, а дальше массово отписываться? https://www.wsj.com/articles/streaming-services-deal-with-growing-number-of-subscribers-who-watch-cancel-and-go-11660557601
👍10
Шведский игровой издатель Embracer Group купил Middle-Earth Enterprises, которой принадлежат права на всю историю Властелина колец, Хоббита и всего, что связано с этой франшизой. Компания тут же заявила, что намерена снимать фильмы о героях вселенной, вроде Гэндальфа, Арагорна, Голлума и других. До этого Embracer выпускала только настольные игры по Властелину Колец и пока чётких планов именно об играх не прозвучало, зато известно, что будет выпущено ещё больше мерча для фанатов (как будто его нехватало).

Embracer Group за последние пару лет получили кучу инвестиций, на которые скупали крупные и мелкие компании на рынке видеоигр, причём от создателей сплошных AAA-проектов до разработчиков казуальных игр, и всё время заявляют о грядущих приобретениях. Насколько известно от разработчиков, этот издатель обычно не вмешивается в процесс создания игр и лишь контролирует происходящее, давая все необходимые средства для деятельности. Будем надеяться, что и с Властелином колец у них выйдет лучше, чем у Диснея с покупкой Звёздных Войн. https://arstechnica.com/gaming/2022/08/embracer-acquires-rights-to-tolkien-related-ip-teases-new-lotr-films/
😁4👍2💔21
Как построить систему обработки сообщений? Разбираем на примере конструктора чат-ботов

Когда: 25 августа, 17:00 (мск)
📍 Регистрация

Регистрируйтесь на вебинар и узнайте, что делать, если ни один из стандартных инструментов построения очередей не подходит. На встрече спикеры разберут принципы построения очередей на примере конструктора чат-ботов Smartbot Pro.

В программе:
🔹 Как построить архитектуру для отказоустойчивой обработки сообщений.
🔹 Какие требования выдвигать к брокеру сообщений, который обеспечивает взаимодействие сервисов между собой. Рассматриваем альтернативы RabbitMQ, Kafka, NATS.
🔹Какие инструменты использовать, чтобы создать универсальный брокер и обеспечить его отказоустойчивость.

Спикеры:
🔹 Монс Андерсон, архитектор Tarantool
🔹 Игорь Латкин, архитектор компании KTS

Зарегистрироваться
Третий день пользуюсь клавиатурой NuPhy Air75. Отличная беспроводная механика с низким профилем. Мне понравилось то, как она сделана и, как и большинство пользователей этой клавиатуры, восхищаюсь тем, как она выглядит. Только почему-то у разработчиков данной клавиатуры пристрастие к рисованным аниме-девочкам, поэтому с клавиатурой в комплекте идут наклейки и постер с рисованной девочкой. Ну и коробка оформлена соответствующе. Выглядит это все абсолютно нелепо и по-дешевому, но, слава богам, на самой клавиатуре и капсах ничего такого и нет. Этого поста бы не было, если бы на клавиатуре не  присутствовал переключатель win-mac и из всех углов не заявлялась поддержка MacOS из коробки. Так вот - это все правда, но жить с такой поддержкой на маке категорически нельзя.

Во-первых, слева от кнопки со стрелками расположен CTRL. В обычной клавиатуре от Apple это место занимает кнопка Option, нажимая которую со стрелками, ты можешь перемещаться в тексте между словами, а в случае с ctrl - у тебя меняются на экране приложения развернутые на полный экран. Такая подмена сильно раздражает. И все бы ничего, если бы клавиши можно было удобно переназначать, но тут появляется на горизонте вторая проблема. Выяснилось, что NuPhy не поддерживается проектом QMK. Но зато, можно скачать с сайта производителя клавиатуры утилиту NuPhy Console, для конфигурации клавиатуры и ремапинга клавиш. Доступна одна лишь версия утилиты (0.1) с не вкушающей пометкой толи альфа, толи бета. Утилита, в лучших традициях такого софта, доступна только под Windows. Конфигурация клавиш, вне зависимости от ползунка win-mac происходит тоже только для win-режима. Поэтому, чтоб на жить с этой клавиатурой комфортно на маке мне пришлось найти ПК с Windows и настроить клавиатуру (сама настройка предельно элементарна). Утилита меняет настройки клавиатуры всегда для режима win, и можно оставив клавиатуру подключенной по Bluetooth к маку, а проводом к Windows и, изменять настройки и сразу проверять поведение в MacOS. После этих не самых хитрых манипуляций оставляем ползунок режима в состоянии win и получаем удовольствие от использования клавиатуры на маке!

Пост написан не на правах рекламы, а клавиатуру я купил за фулпрайс в небезызвестном GeekBoards. Забавная приятная мелочь №1 - клавиатура приехала с заводской кириллицей на капсах. Досадное - у них нет в наличии бомбических чехлов от NuPhy под наванием NuFolio.

Забавная приятная мелочь №2: у меня есть промокод GEEKCLICK на брелочек от GeekBoards в подарок.
👍6😱1
NuPhy Air 75
👍8🔥4🥴2🤔1
Как и в других странах, в России наблюдается достаточно высокий спрос на ИТ-специалистов на рынке труда. Как правило, компаниям наиболее интересны соискатели уже с опытом работы над каким-либо коммерческим продуктом. И на старте своей ИТ карьеры достаточно трудно без каких-либо трудовых "ачивок" устроиться в стабильную компанию, в которой можно получить хороший опыт работы над продуктом. А что еще ценнее - над действительно хорошим и восстребованным продуктом. В последнее время все шире получает распространение практика проведения большими компаниями стажировок для начинающих специалистов. Так, например, на этой неделе Яндекс провел День стажера Young&&Yandex – лекции, знакомства с менеджерами, настолки, вечернее пати. По статистике компании более половины стажеров получают оффер. Мне кажется, что это круто и даже очень жаль, что такого не было во времена моего студенчества и старта работы в ИТ. В общем, если вам хочется в большое плавание в большом ИТ, то стажировка может дать вам отличный шанс.
👍10😁2🔥1
Forwarded from Skolkovo LIVE
😱 Переживаете, что скоро останемся без ноутбуков, телефонов и серверов? Без паники! Сделали краткий ликбез по российским процессорам.

На наши вопросы ответил Павел Кривозубов, руководитель направления «Робототехника и искусственный интеллект» ИТ-кластера «Сколково».

⚙️ Кто делает процессоры в России?

Производителей процессоров в стране не так много. Самые крупные — Baikal Electronics (линейка Baikal) и МЦСТ (линейка Эльбрус). Есть ряд других компаний, которые производят специализированные процессоры — например, чипы для радиотехники.

⚙️ А покупает их кто?

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

⚙️ Процессоры выпускают в России или на зарубежных фабриках?

Производство отечественных процессоров — таких как Baikal или Эльбрус — было на известной фабрике TSMC в Тайване. Она производит действительно большой объем процессоров по всему миру, но сейчас перестала работать с нашими компаниями.

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

⚙️ А почему стартап не может начать производить процессоры?

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

⚙️ Могут ли в России появиться свои производители процессоров, не уступающих западным аналогам?

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

#ЭкспертыФонда
😁21👍6🥴4👎1😱1🤣1🍌1
Как мигрировать в российское облако, не останавливая критичные сервисы? Об этом поговорим на вебинаре!

Когда: 20 сентября, 17:00 (мск)
📍 Регистрация

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

О чем поговорим на вебинаре:
🔹 Как реализуются функции Live Cloud Migration, Disaster Recovery и Cloud Backup на платформе VK Cloud.
🔹 Как создать консистентную копию критических компонентов вашей инфраструктуры.
🔹 Как повысить безопасность инженерной ИТ-инфраструктуры при миграции.
🔹 Как перевести критические системы на ресурсы нового облачного провайдера без даунтайма и создать резервную площадку в облаке.

Спикеры:
🔹 Тимур Явкин, архитектор облачных решений, VK Cloud
🔹 Сергей Самоукин, руководитель коммерческой группы, VK Cloud
👍5😁1🥴1