• Что нужно уточнить на собеседовании?

    kryamk
    @kryamk
    Будут ли печенье с чаем от фирмы
    Ответ написан
    Комментировать
  • Какие есть варианты повышения для вебмастера?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Вырасти из web-мастера в программисты, сменив "seo-компанию" на нормальную.
    Ответ написан
    Комментировать
  • Существует ли "отзовик по фирмам" в ИТ сообществе?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, отзывы чаще пишут недовольные. Так что вы можете увидеть десять негативных отзывов, не увидеть тысячу позитивных и сформировать неверное представление о компании. Во-вторых, сидящие на дереве птицы не боятся, что под ними сломается ветка, не потому, что верят в ветку, а потому, что верят в свои крылья. Развивайте собственный профессионализм и сможете диктовать условия при заключении трудового договора и требовать его соблюдения от любой компании, либо мгновенно менять провинившуюся компанию.
    Ответ написан
    3 комментария
  • Как сохранить нормплбно информацию в бд?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Казалось бы причём тут typescript?
    Чё это: { 2, "фыаацаа"} за херня? Массив в javascript в квадратных скобках задаётся, объект же требует конкретных ключей.
    Ответ написан
    Комментировать
  • Книги, советы, курсы по архитектуре приложений?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Начните с хрестоматийного трёхтомника Роберта Мартина "Чистый код", "Чистая архитектура" и "Идеальный программист".
    Ответ написан
    Комментировать
  • Как работодатель организует ваше обучение?

    Griboks
    @Griboks
    Приходит начальник однажды и говорит, мол, разберись в какой-то неведомой legacy open source херате на C++ без инструкции, мануалов + она не гуглится. А потом оказывается, что это софт для 5G вышек, а я стал передовым специалистом в области связи.
    Ответ написан
    Комментировать
  • Как развиваться если ты один?

    bingo347
    @bingo347
    Crazy on performance...
    мой уровень - middle

    я буду единственным фронтом на проекте

    писать предстоит с нуля

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

    Когда Вы один, нет возможности ни посмотреть как схожие задачи решают другие, ни понять, что сам делаешь что-то не то, и это на любом уровне так. Возможно сможете проанализировать свои ошибки постфактум, когда проект загнется, а он обязательно загнется, ибо бизнес на нем экономит не успев начать...
    Заплатят тоже вряд ли нормально, так что смысла идти на такой проект не вижу совсем.
    А сможете ли Вы при этом вырасти - зависит только от Вас. Senior - это больше про ответственность, про проектирование и про глобальное видение проекта целиком. Это сильно отличается от простого делания тасок самостоятельно (middle) или с помощью коллег (junior).
    Что бы писать проект с нуля, его придется проектировать, так или иначе, а это задача senior, если справитись - опыт будет очень полезным. Но скорее всего наделаете ошибок, это нормально для Вас, но плохо для бизнеса, хотя такой бизнес получит именно то, что должен получить нанимая мидла на решение сеньорских проблем...
    Ответ написан
    3 комментария
  • Что может ESLint без плагинов?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    ESlint без плагинов может довести до нервного срыва.
    Ответ написан
    Комментировать
  • Как сделать текст по спирали на канвасе?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    просто накидал пример. Думаю посмотрев его вы сможете внести нужные правки в ваш код.

    спираль закручена против часовой стрелки


    спираль закручена по часовой стрелки

    Ответ написан
    Комментировать
  • Как описать обобщённый ответ с restful api сервера?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Используйте дженерик параметры
    export type ApiResponse<T> =
      | { errors: Array<{ [key: string]: string }> }
      | { data: Array<T> }
      | { text: string };

    abstract class Api<T> {
      protected readonly baseUrl: string;
      protected readonly endPoint: string;
    
      protected get url(): string {
        return new URL(this.endPoint, this.baseUrl).toString();
      }
    
      protected constructor(baseUrl = '/', endPoint: string) {
        this.baseUrl = baseUrl;
        this.endPoint = endPoint;
      }
    
      protected async http({
        url = '',
        method = 'GET',
        data = undefined,
      }: RequestData): Promise<ApiResponse<T>> {
        try {
          const response: Response = await fetch(
            (new URL(url, this.url).toString()),
            { method, body: data }
          );
          return await response.json();
        } catch (e) {
          console.error(e.message);
          return { text: e.message };
        } finally {
          // finnally
        }
      }
    }

    class ApiPost extends Api<Post> {
      constructor(baseUrl: string, endPoint: string) {
        super(baseUrl, endPoint);
      }
    
      async list(count?: number): Promise<false | Array<Post>> {
        const response: ApiResponse = await this.http({
          url: `${count ? `?_limit=${count}` : ''}`,
        });
    
        if (Array.isArray(response))
          return response;
    
        return false;
      }
    }
    Ответ написан
    4 комментария
  • Как передать дженерик функции аргумент key типа keyof T и чтобы при этом же было T[key]: number?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    type ChooseKeys<O, T> = {
        [K in keyof O]: O[K] extends T ? K : never;
    }[keyof O];
    
    // 'number' | 'alsoNumber'
    type Test1 = ChooseKeys<{
      number: number;
      alsoNumber: number;
      string: string;
      anotherString: string;
      bool: boolean;
    }, number>;
    
    // 'number' | 'alsoNumber' | 'bool'
    type Test2 = ChooseKeys<{
      number: number;
      alsoNumber: number;
      string: string;
      anotherString: string;
      bool: boolean;
    }, number | boolean>;
    Ответ написан
    Комментировать
  • Почему не работает MutationObserver?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    MutationObserver не реагирует на удаление элемента, за которым он следит. Надо следить за childList родительской ноды.
    Ответ написан
    Комментировать
  • Куда поступить после 9 класса бэкенд-разработчику?

    @mkone112
    Начинающий питонист.
    Смотрю в сторону онлайн курсов, которые так активно рекламируются.

    Ты поиском пользоваться совсем не умеешь? 9 класс все дела, но не настолько же...
    Все мои братья и сёстра учились, долго учились. Сейчас они работают и получают зп 20к-50к

    А кто сказал что они учились? У меня на потоке было 100 человек, половина даже получила диплом. Но учились дай боже если 5% и их начали хантить еще на 2ом курсе. Есть образование, а есть диплом. Чуешь разницу?
    Расклад такой, диплом можно получить всегда - на крайнак купить(хотя хз зачем). Можно свалить из школы в любой момент, а если вдруг понадобится аттестат - он получается за 6 месяцев.
    Что думаете о курсах?

    Очень полезная штука, рекомендую. Например Geekbrains - у них отличный экспресс-курс по снятию розовых очков. Когда они сдерут с тебя 100500$, да еще в кредит, а в замен дадут тебе кучу...эээ...да, в общем кучу - ты сильно поумнеешь, возможно даже поймешь, что научить чему-то нельзя - можно только научиться.
    Если бы я был на твоем месте - я бы хреначил математику, химию, физику, биологию...ну и все. На остальное бы забил хрен, потом бы сдал егэ и попер в мфти(вузы ниже уровнем ох как не рекомендую). Если ты уверен что it это твое - советую сделать тоже самое.
    UPD: сначала вопрос показался мне унылым, но сейчас прочитал целиком - поржал.
    анимался разработкой ботов, поэтому имею в этой сфере хороший опыт

    Чума!
    то с бэкендом всё на уверенном среднем уровне

    Т.е. ты мидл? Круто - го на апворк за nk$.
    Несмотря на абсурдность ситуации апелляцию подавать не стал.

    Ну этож логично. Гугл заблокировал проект на который я убил кучу времени? Ну и хрен с ним! Есть же курсы! Вон Geekbrains - я успею за свободную кассу вовремя!
    Думать о технаре не хочу. Смотрю в сторону онлайн курсов, которые так активно рекламируются

    но получать новые знания

    Это шедевр.
    Если и учиться, то только дистанционно

    Что за бред? Что значит учиться дистанционно? Это когда книга от тебя на расстоянии 2х метров?
    платить готов

    За что? За книги? За преподавателей? И то и другое в школе уже оплачено налогами твоих предков.
    Школа отнимает уйму времени,

    Внезапно!
    поэтому уделять время проектам и самообразованию получается не всегда.

    Что за бред? А чем ты занят в школе?
    Избавившись от школы, я получу возможность полностью окунуться в мир коддинга

    Чем мешает школа?
    без лишний информации.

    Это что? У меня в школе было 2 лишних предмета - право и история. До сих пор не врубаюсь зачем мне знать историю и законы не родной страны, если учишься в родной стране и любишь всякие рассказы - то у тебя 0 лишних предметов(надеюсь предмета 'религия' у тебя нет?). Больше там не было ни одного лишнего, тем более для инженера, предмета. Ни одного.
    планирую всё же попробовать себя в фрилансе,

    Хорошая идея! Аналогично 'сходить на курсы', поработав за еду - получишь другую точку зрения.
    который поможет изменить мнение родителей

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

    Что это? 'Книга в зубы и вперед'? Других способов учиться я не знаю.
    Ответ написан
    Комментировать
  • Какой из двух типов обучения лучше?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Какой формат более эффективен с точки зрения обучения и образования? Что говорит ваш опыт по этому поводу?

    Никакой, так как программирование 1 час = это вообще ничто, бывает в сложном проекте 1 час просто дебажишь ошибку, из-за большого количества плохого кода, а у новичков процесс обучение + дебаг своего же = умножить на n.

    С английским так же - что бы выучить английский нужно,
    а) жить в стране носителя языка, что бы 24\7 общаться и ассимилироваться в нем, либо
    б)включить во все аспекты жизни английский язык - хобби, работу, просмотр\прослушивание музыки, фильма, книги и тд.

    Хотите стать мастером какого либо дела - 8-12 часов в день, и через какое-то время после тяжелого отрезка непонимания и отрицания = плоды будут, но вот только сколько лет вам понадобится на это, 1 год или 5, зависит от наследуемых свойств или задатков + вашего личного старания.
    Ответ написан
    Комментировать
  • Аналог then() в RxJs для Observable?

    lazalu68
    @lazalu68
    Salmon
    subscribe
    Ответ написан
    Комментировать
  • Как узнать что держит юзер указателем мыши?

    yellow79
    @yellow79
    Senior Software Engineer
    dragenter
    Срабатывает, когда перемещаемый элемент попадает на элемент-назначение. Обработчик этого события показывает, что элемент находится над объектом на который он может быть перенесен. Если же обработчика нет, либо он не совершает никаких действий перемещение по умолчанию запрещено. Это событие также используется для того, чтобы подсветить либо промаркировать объект над которым происходит перемещения в случае, если перемещение на данный элемент разрешено. Для детальной информации смотрите Specifying Drop Targets.

    https://developer.mozilla.org/ru/docs/Web/Guide/HT...
    Ответ написан
    Комментировать
  • Как переделать код из jQuery в JavaScript?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Год назад фрилансер сделал код

    Сама в JavaScript и jQuery не сильна.

    По-моему, ответ очевиден - наймите ещё одного фрилансера.
    Ответ написан
    Комментировать
  • Как создать обертку вокруг HttpClient?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    У реализации должна быть наиболее общая сигнатура от всех перегрузок. Притом типы в реализации работают только внутрь, а наружу торчат только перегрузки:
    export class MyHttpClient {
      constructor(private readonly http: HttpClient) {}
    
      put(params: Params<'body', 'arraybuffer'>): Observable<ArrayBuffer>;
      put(params: Params<'body', 'blob'>): Observable<Blob>;
      put(params: Params<'body', 'text'>): Observable<string>;
      put(params: Params<'events', 'arraybuffer'>): Observable<HttpEvent<ArrayBuffer>>;
      put(params: Params<'events', 'blob'>): Observable<HttpEvent<Blob>>;
      put(params: Params<'events', 'text'>): Observable<HttpEvent<string>>;
      put(params: Params<'events', 'json'>): Observable<HttpEvent<Object>>;
      put<T>(params: Params<'events', 'json'>): Observable<HttpEvent<T>>;
      put(params: Params<'response', 'arraybuffer'>): Observable<HttpResponse<ArrayBuffer>>;
      put(params: Params<'response', 'blob'>): Observable<HttpResponse<Blob>>;
      put(params: Params<'response', 'text'>): Observable<HttpResponse<string>>;
      put(params: Params<'response', 'json'>): Observable<HttpResponse<Object>>;
      put<T>(params: Params<'response', 'json'>): Observable<HttpResponse<T>>;
      put(params: Params<'body', 'json'>): Observable<Object>;
      put(params: Params<Observe, ResponseType>): Observable<unknown> {
        return this.http.put(params.url, params.body, params.options as Params<'body', 'json'>['options']);
      }
    }


    А вообще, мне почему-то кажется, что так будет гораздо проще:
    type ResponseTypeMap = {
      arraybuffer: ArrayBuffer;
      blob: Blob;
      text: string;
      json: Object;
    };
    type ResponseTypes = keyof ResponseTypeMap;
    type ObserveWrapperMap<T extends ResponseTypeMap[ResponseTypes]> = {
      body: Observable<T>;
      events: Observable<HttpEvent<T>>;
      response: Observable<HttpResponse<T>>;
    };
    type ObserveWrappers = keyof ObserveWrapperMap<ResponseTypeMap[ResponseTypes]>;
    type Result<O extends ObserveWrappers, R extends ResponseTypes> = ObserveWrapperMap<ResponseTypeMap[R]>[O];
    type Params<O extends ObserveWrappers, R extends ResponseTypes> = {
      url: string;
      body: any;
      options?: {
        headers?: HttpHeaders | Record<string, string | string[]>;
        observe?: O;
        params?: HttpParams | Record<string, string | string[]>;
        reportProgress?: boolean;
        responseType: R;
        withCredentials?: boolean;
      };
    }
    
    export class MyHttpClient {
      constructor(private readonly http: HttpClient) {}
    
      put<O extends ObserveWrappers = 'body', R extends ResponseTypes = 'json'>(params: Params<O, R>): Result<O, R> {
        const {url, body, options} = params as Params<'body', 'json'>;
        return this.http.put(url, body, options) as Result<O, R>;
      }
    }
    особенно если помимо put будут и другие методы
    Ответ написан
    7 комментариев
  • Резюме в .doc или .pdf?

    @Denioo
    Неужели наконец "стоящий вопрос" среди "какой стек выбрать? универ или работа? войти в айти или пойти в пивнуху?"

    Вы серьезно решили спросить какой формат выбрать? Боже такими темпами люди и пукнуть без вопроса здесь не смогут.
    Ответ написан
    2 комментария
  • Kак задизайнить сущности?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Вариант 1. В отдельной таблице, содержащей ссылку на таблицу кинотеатров, ссылку на таблицу фильмов и информацию о сеансе. В этом случае сама эта таблица будет расширенным (с дублями) вариантом таблицы связи many-to-many.

    Вариант 2. В отдельной таблице, содержащей ссылку на таблицу many-to-many связи кинотеатр-фильм и информацию о сеансе.
    Ответ написан
    5 комментариев