Система ролей в данном случае может выглядеть и простым пятистрочным конфигом + одним единственным сервисом, который умеет читать его и говорить "да"/"нет" на запрос доступа от конкретного юзера. 2 минуты подумать, 15 строк кода и Серёжа неправ.
Хорошая архитектура это не про "давайте юзать r/w базу везде и к каждой сущности добавлять инструмент управления", а про поддержку, расширяемость и адаптирование к новым требованиям.
Я думаю, сыграла на руку небольшая армия фанатов (юзеров сайта) и анонс среди своих :)
Мы заметили, что не все голоса с новых аккаунтов проходили (делали опрос по знакомым). Похоже, что у них там много скрытых (и, видимо, работающих) механизмов от накруток.
Помимо этого, день был действительно релаксовым - действительно не было сильных конкурентов.
Выбрали субботу - у нас тоже, как верно вы заметили, не no-code платформа или очередной редактор картинок. Немного прозаичнее - статистика по киберспорту. Заняли #1 ;)
Люблю современный мир за то, что знания и техника доступы как никогда ранее. Желаю вам успехов в будущей карьере и не выгореть где-то по пути :)
Что касается вышки, я, будучи неучем, всё же рекомендовал бы пройти ВУЗ. И не заочку, что важно, ведь корочка сама по себе сегодня ничего не стоит.
Если повезёт, то это:
поможет прокачать фундаментальные знания (самостоятельно это может быть или долго, или неинтересно, или из области, которая совершенно не связана с основной деятельностью напрямую)
возможность обрести полезные знакомства (если одногруппники будут адекватными - в будущем будет неплохое подспорье в карьере и бизнесе)
участвие во всевозможных хакатонах, получение грантов и прочие увлекательные мероприятия
скидки на продукты крупных компаний
стажировки в тех же крупных компаниях
возможность пожить в другой стране по программе обмена
социализация, куда же без неё, особенно в мире удалёнки
Многое из этого можно и без универа, конечно, но расти в конкурентной среде, где Вася за соседней партой получает уже 5 грант за свои наработки, гораздо интереснее и увлекательнее :)
К тому же, это, зачастую, "потеря" всего первых трёх лет, т.к. очень много талантливых студентов уже на 4 курсе трудоустроены и уделяют учёбе ровно столько времени, сколько им нравится (от "пойду заплачу за сессию" до "о, круто, лекция о новых алгоритмах").
Ну да, ну да. Земля плоская, а Pfizer раздаёт 5G :)
Существование товарищей, что верят в вышеуказанные "факты" ещё более странно.
Стоит учесть, что для опровержения этих тезисов существует наука, а вот личные убеждения это уже совершенно другая материя - там работает пропагада иного рода.
Я нисколько не поддерживаю людей из 1-5, но все мы люди уникальные со своим собственным жизненным опытом и своими личными убеждениями.
Называть людей с иной точкой зрения тупыми это, мне кажется, некорректно. Какой бы неприятной эта точка зрения ни была.
1) Идейные - за Великую Россию, царя-батюшку и всё такое.
2) Специалисты, вырощенные спецслужбами изначально - тут, по умолчанию, будет делаться всё во благо текущего строя.
3) Люди с пониженной самооценкой, которые работали в гос. структуре до внедрения подобных средств, думающие, что их никуда больше не возьмут или боящиеся выходить из зоны комфорта. Боящиеся какого-либо преследования из-за того, что ушли.
4) Простые работяги, которые пришли в структуру за "куском хлеба" и стабильностью.
5) Гении, что стремятся делать максимально сложные и масштабные проекты.
У каждой группы своя мотивация и далеко не все участники совершают деяние с целью навредить.
Любой разработчик знает, что существуют задачи (особенно, если ты работаешь один как фрилансер или в небольшой студии, в которой «один проект — один ответственный») когда можно работать без гита
Видимо, я какой-то фейковый разработчик. Даже работая в одиночку, системя контроля версий приносит пользу: быстрый откат изменений; просмотр истории изменений (вида "ой, а что это я там менял, что у меня всё сломалось?"); собственно, сам контроль версий исходного кода (вида "надо тут эту фичу назад вернуть, раньше было лучше"). В некоторых вариациях, это деплой одной командой или мониторинг "а не закинули нам какого скрипта лишнего?".
Как по мне, единственно допустимый вариант не использовать систему контроля версий - одноразовый скрипт (который действительно запустился раз и его тут же можно удалять).
Только после вашего комментария узнал о том, что там какие-то окошки вылазят :)
Это зависит от времени, которое вы держите Alt. Я переключаю язык без задержек и у меня окошко не вылазит. Может быть, можно через regedit подправить это время.
Мне кажется, не указали самого главного - сколько это стоило заказчику (денег и времени) и какой экономический эффект от переезда (денег и ускорения процессов).
Неплохо было бы обозначить, для чего это надо, поскольку в nextjs из коробки есть сразу несколько решений, которые делают практически то же самое: - static html export - для получения полностью статической версии сайта - automatic static optimization - для генерирования статических страниц с возможностью подгрузки новых данных после загрузки страницы.
Конечно, они работают без Redis, но я не понимаю, для чего необходимо делать лишний round-trip по сети для отображения статических ресурсов.
По моему опыту, тесты (в частности, юнит-тесты) помогают не баги отлавливать (это делает QA команда), а дают хотя бы минимальную уверенность в том, что при рефакторинге или добавлении нового функционала что-то да не отвалится. Поскольку тесты пишет тот же человек, что и код, покрывает он только те случаи, о которых разработчик сам догадается. Тест тут магическим образом, увы, не поймает багу. :(
> нам ведь нет смысла реализовывать back/forward логику в телеграмме
Очень спорно. В своем боте реализовал поддержку истории со многоуровневыми меню и переходами между разными «экранами», пользователи, вроде бы, довольны.
Я, правда, использую кастомную клавиатуру, а не инлайн-кнопки, но то такое.
В общем, юз-кейсы могут быть абсолютно непредсказуемыми и утверждать, что чего-то не надо — опрометчиво.
А как доказать, что строка, которая пришла с сервера, это действительно UserName, а не что-то иное? Предполагается, что приведение типов будет использоваться в фабриках, а по приложению будут ползти уже Value Object. Этот способ, как минимум, гарантирует, что нельзя будет случайно передать рандомную строку вместо UserName.
Я могу ошибаться, но вы именно о таком поведении писали в комментарии выше.
Буквально вчера делал у себя на проекте похожую штуку. Работает :)
type UserName = string & { readonly tag: unique symbol };
type Password = string & { readonly tag: unique symbol };
const nameOf = (name: string) => name as UserName;
function stringOf(name: UserName): string {
return name;
}
stringOf(nameOf("bingo347")) // OK
stringOf("bohdan-shulha") // Argument of type '"bohdan-shulha"' is not assignable to parameter of type 'UserName'.
stringOf("hellowrld" as Password) // Argument of type 'Password' is not assignable to parameter of type 'UserName'.
Не сталкивались ли вы с задачей ограничения доступа к тесту по времени? Делал небольшое исследование по доступным плагинам, но руки не дошли попробовать ни один из них.
Мне не сильно по душе классы — я больше сторонник clojure подхода к данным. Но это всё вкусовщина.
Я сейчас много пишу на Реакте и тоже привык к функциональному подходу и иммутабельными данными и трансформациями (как я раньше без этого жил?). У классов в моём случае преимущество состоит в том, что можно применять декораторы к полям. Я планировал добавить поддержку кастомных трансформеров.
Я в исследовательских целях делал генератор на базе AST для конвертирования JSON в инстансы классов и наоборот. Рантайм оверхед — 0. Работу вёл в рамках proof of concept, до рабочей версии довести это пока нет времени. Пользоваться можно было бы как-то так (но с дополнительным степом вызова CLI, чтобы среда разработки, линтеры и люди тоже подхватили новые функции):
// src/models.ts
import { Transform, Expose } from 'mycooljsonlib@localhost';
// Декораторы удаляются из скомпилированного кода, если использовать transformer,
// поставляемый с либой. Подключение, правда, костылями, через ttypescript,
// потому что MS не желают (пока?) адекватно поддерживать
// плагины в дефолтном конфиге TypeScript
// Декораторы сами по себе - просто маркеры для трансформера, они не меняют
// поведение классов и полей
@Transform()
export class PhoneNumber {
name: string;
countryCode: string;
phone: string;
}
@Transform()
export class User {
id: string;
name: string;
gender: "male" | "female";
// Опциональные поля тоже допустимы
age?: number;
// Возможность переименовывать поля
@Expose('phone_book')
// В оригинале был объект, но я до этого не дополз, массив работал
phoneBook: Array<PhoneNumber>;
}
// index.ts
// Я делал предположение, что лучше разрешить конвертировать любой объект,
// чем изначально завязываться на JSON строку
const plainObject = JSON.parse('<...input...>');
import { plainToUser } from './generated/models';
// В дальнейшем можно было бы добавить функции jsonToUser()
// На выходе получаем инстанс класса юзер
const user = plainToUser(plainObject);
// При обратной конвертации - объект
const plainAgain = userToPlain(user);
// generated/models.ts
export function plainToUser(plain): User {
const obj = new User();
if (typeof plain['id'] === 'string') {
obj.id = plain['id'];
} else {
throw new Error('Invalid type for id: expected string, got <...>');
}
if (isArray(plain['phone_number'])) {
obj.phoneNumber = plain['phone_number'].map(plainToPhoneNumber);
} else {
throw new Error('...');
}
// тут остальные проверки для оставшихся свойств
return obj;
}
У меня Scaleway стабильно и непредсказуемо отваливался, в панели управления он отображался работающим. Решалось только через поддержку, ребут из панели управления не срабатывал.
Как-то уехал отдыхать, а сервер слёг где-то на неделю. Что интересно, ни разу не было ни «извините», ни «вот вам компенсация за ДНИ простоя». Перешёл на Hetzner и не жалею, хоть и плачу на 30% больше (решил немного мощнее инстанс взять).
Система ролей в данном случае может выглядеть и простым пятистрочным конфигом + одним единственным сервисом, который умеет читать его и говорить "да"/"нет" на запрос доступа от конкретного юзера. 2 минуты подумать, 15 строк кода и Серёжа неправ.
Хорошая архитектура это не про "давайте юзать r/w базу везде и к каждой сущности добавлять инструмент управления", а про поддержку, расширяемость и адаптирование к новым требованиям.
Когда у вас компонент обрабатывает
children
и вот так, если нет:Вся соль здесь:
В последнее время я прихожу к тому, что лучше всегда опираться на
VFC
и явно указывать, где необходимо передаватьchildren
Я думаю, сыграла на руку небольшая армия фанатов (юзеров сайта) и анонс среди своих :)
Мы заметили, что не все голоса с новых аккаунтов проходили (делали опрос по знакомым). Похоже, что у них там много скрытых (и, видимо, работающих) механизмов от накруток.
Помимо этого, день был действительно релаксовым - действительно не было сильных конкурентов.
Наш портал - https://ess.gg
Мы тоже запускались в ноябре :)
Выбрали субботу - у нас тоже, как верно вы заметили, не no-code платформа или очередной редактор картинок. Немного прозаичнее - статистика по киберспорту. Заняли #1 ;)
Стресс, конечно, тот ещё был.
А мне 30 (ой, уже 31...) и я формочки делаю ;)
Люблю современный мир за то, что знания и техника доступы как никогда ранее. Желаю вам успехов в будущей карьере и не выгореть где-то по пути :)
Что касается вышки, я, будучи неучем, всё же рекомендовал бы пройти ВУЗ. И не заочку, что важно, ведь корочка сама по себе сегодня ничего не стоит.
Если повезёт, то это:
поможет прокачать фундаментальные знания (самостоятельно это может быть или долго, или неинтересно, или из области, которая совершенно не связана с основной деятельностью напрямую)
возможность обрести полезные знакомства (если одногруппники будут адекватными - в будущем будет неплохое подспорье в карьере и бизнесе)
участвие во всевозможных хакатонах, получение грантов и прочие увлекательные мероприятия
скидки на продукты крупных компаний
стажировки в тех же крупных компаниях
возможность пожить в другой стране по программе обмена
социализация, куда же без неё, особенно в мире удалёнки
Многое из этого можно и без универа, конечно, но расти в конкурентной среде, где Вася за соседней партой получает уже 5 грант за свои наработки, гораздо интереснее и увлекательнее :)
К тому же, это, зачастую, "потеря" всего первых трёх лет, т.к. очень много талантливых студентов уже на 4 курсе трудоустроены и уделяют учёбе ровно столько времени, сколько им нравится (от "пойду заплачу за сессию" до "о, круто, лекция о новых алгоритмах").
Ну да, ну да. Земля плоская, а Pfizer раздаёт 5G :)
Существование товарищей, что верят в вышеуказанные "факты" ещё более странно.
Стоит учесть, что для опровержения этих тезисов существует наука, а вот личные убеждения это уже совершенно другая материя - там работает пропагада иного рода.
Я нисколько не поддерживаю людей из 1-5, но все мы люди уникальные со своим собственным жизненным опытом и своими личными убеждениями.
Называть людей с иной точкой зрения тупыми это, мне кажется, некорректно. Какой бы неприятной эта точка зрения ни была.
На самом деле, всё просто и сложно одновременно.
Я вижу несколько категорий:
1) Идейные - за Великую Россию, царя-батюшку и всё такое.
2) Специалисты, вырощенные спецслужбами изначально - тут, по умолчанию, будет делаться всё во благо текущего строя.
3) Люди с пониженной самооценкой, которые работали в гос. структуре до внедрения подобных средств, думающие, что их никуда больше не возьмут или боящиеся выходить из зоны комфорта. Боящиеся какого-либо преследования из-за того, что ушли.
4) Простые работяги, которые пришли в структуру за "куском хлеба" и стабильностью.
5) Гении, что стремятся делать максимально сложные и масштабные проекты.
У каждой группы своя мотивация и далеко не все участники совершают деяние с целью навредить.
Видимо, я какой-то фейковый разработчик. Даже работая в одиночку, системя контроля версий приносит пользу: быстрый откат изменений; просмотр истории изменений (вида "ой, а что это я там менял, что у меня всё сломалось?"); собственно, сам контроль версий исходного кода (вида "надо тут эту фичу назад вернуть, раньше было лучше"). В некоторых вариациях, это деплой одной командой или мониторинг "а не закинули нам какого скрипта лишнего?".
Как по мне, единственно допустимый вариант не использовать систему контроля версий - одноразовый скрипт (который действительно запустился раз и его тут же можно удалять).
Только после вашего комментария узнал о том, что там какие-то окошки вылазят :)
Это зависит от времени, которое вы держите Alt. Я переключаю язык без задержек и у меня окошко не вылазит. Может быть, можно через regedit подправить это время.
Мне кажется, не указали самого главного - сколько это стоило заказчику (денег и времени) и какой экономический эффект от переезда (денег и ускорения процессов).
Неплохо было бы обозначить, для чего это надо, поскольку в nextjs из коробки есть сразу несколько решений, которые делают практически то же самое:
- static html export - для получения полностью статической версии сайта
- automatic static optimization - для генерирования статических страниц с возможностью подгрузки новых данных после загрузки страницы.
Конечно, они работают без Redis, но я не понимаю, для чего необходимо делать лишний round-trip по сети для отображения статических ресурсов.
Очень спорно. В своем боте реализовал поддержку истории со многоуровневыми меню и переходами между разными «экранами», пользователи, вроде бы, довольны.
Я, правда, использую кастомную клавиатуру, а не инлайн-кнопки, но то такое.
В общем, юз-кейсы могут быть абсолютно непредсказуемыми и утверждать, что чего-то не надо — опрометчиво.
Я могу ошибаться, но вы именно о таком поведении писали в комментарии выше.
Я сейчас много пишу на Реакте и тоже привык к функциональному подходу и иммутабельными данными и трансформациями (как я раньше без этого жил?). У классов в моём случае преимущество состоит в том, что можно применять декораторы к полям. Я планировал добавить поддержку кастомных трансформеров.
В выдуманном примере может быть так:
Как-то уехал отдыхать, а сервер слёг где-то на неделю. Что интересно, ни разу не было ни «извините», ни «вот вам компенсация за ДНИ простоя». Перешёл на Hetzner и не жалею, хоть и плачу на 30% больше (решил немного мощнее инстанс взять).