Задать вопрос
  • Как двум разработчикам одновременно разрабатывать один сайт на wordpress?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    1. Создайте скрипты для модификации БД.
    2. Не изменяйте чужих данных только добавляйте.
    3. Создайте скрипты для дропа данных см п2
    4. создайте скрипты для seeddata

    Структура папок. По идее любое ваше изменение можно откатить просто запустив нужный скрипт.

    1. SQL
    • up
      • up_2020_10_28_01.sql
      • up_2020_10_28_02.sql

    • down
      • down_2020_10_28_01.sql
      • down_2020_10_28_02.sql

    • seed
      • seed_2020_10_28_01.sql
      • seed_2020_10_28_02.sql




    Ниже пример MSSQL но это применимо к любой базе
    CREATE TABLE [Telemetry] (
        [Id] bigint NOT NULL IDENTITY,
        [Login] nvarchar(200) NULL,
        [DisplayName] nvarchar(200) NULL,
        [Url] nvarchar(400) NULL,
        [Start] datetime2 NOT NULL,
        [End] datetime2 NULL,
        [Duration] int NULL,
        [PageName] nvarchar(400) NULL,
        [CourseId] uniqueidentifier NOT NULL,
        [PageNumber] nvarchar(200) NULL,
        CONSTRAINT [PK_Telemetry] PRIMARY KEY ([Id])
    );
    GO
    
    
    CREATE INDEX [IX_Telemetry_CourseId] ON [Telemetry] ([CourseId]);
    GO
    
    
    CREATE INDEX [IX_Telemetry_Login] ON [Telemetry] ([Login]);
    GO
    
    
    CREATE INDEX [IX_Telemetry_PageNumber] ON [Telemetry] ([PageNumber]);
    GO
    
    
    CREATE INDEX [IX_Telemetry_Status] ON [Telemetry] ([Start]);
    GO
    
    ------ Изменение размера -----------
    DROP INDEX [IX_Telemetry_PageNumber] ON [Telemetry];
    DECLARE @var0 sysname;
    SELECT @var0 = [d].[name]
    FROM [sys].[default_constraints] [d]
    INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
    WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'PageNumber');
    IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var0 + '];');
    ALTER TABLE [Telemetry] ALTER COLUMN [PageNumber] nvarchar(20) NULL;
    CREATE INDEX [IX_Telemetry_PageNumber] ON [Telemetry] ([PageNumber]);
    
    GO
    
    DROP INDEX [IX_Telemetry_Login] ON [Telemetry];
    DECLARE @var1 sysname;
    SELECT @var1 = [d].[name]
    FROM [sys].[default_constraints] [d]
    INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
    WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'Login');
    IF @var1 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var1 + '];');
    ALTER TABLE [Telemetry] ALTER COLUMN [Login] nvarchar(20) NOT NULL;
    CREATE INDEX [IX_Telemetry_Login] ON [Telemetry] ([Login]);
    
    GO
    
    DECLARE @var2 sysname;
    SELECT @var2 = [d].[name]
    FROM [sys].[default_constraints] [d]
    INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
    WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'DisplayName');
    IF @var2 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var2 + '];');
    ALTER TABLE [Telemetry] ALTER COLUMN [DisplayName] nvarchar(100) NULL;
    
    GO
    
    INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
    VALUES (N'20200922061931_ChangeSizes', N'3.1.8');
    
    GO
    
    
    -- изменение курса с гуида на строку
    
    EXEC sp_rename N'[Telemetry].[IX_Telemetry_Status]', N'IX_Telemetry_Start', N'INDEX';
    
    GO
    
    DROP INDEX [IX_Telemetry_CourseId] ON [Telemetry];
    DECLARE @var0 sysname;
    SELECT @var0 = [d].[name]
    FROM [sys].[default_constraints] [d]
    INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
    WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Telemetry]') AND [c].[name] = N'CourseId');
    IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Telemetry] DROP CONSTRAINT [' + @var0 + '];');
    ALTER TABLE [Telemetry] ALTER COLUMN [CourseId] nvarchar(38) NOT NULL;
    CREATE INDEX [IX_Telemetry_CourseId] ON [Telemetry] ([CourseId]);
    
    GO
    
    
    GO
    Ответ написан
    3 комментария
  • Как устроиться на начальную должность в веб?

    PlugIN
    @PlugIN
    A Little Programmer
    Доброго дня! Попробуйте переложить бумажную логику какого-либо словаря на программную логику. Там будет всяческая фильтрация, выборки и UI. Главное придумать что-то и начать делать. Самое хорошее, IMHO, для pet project это самому сформировать требования к продукту, расписать функциональность, настроить свою инфраструктуру, спроектировать БД, сделать фронт (подумать над более-менее удобным UI) и бэк. Покрыть тестами. И приложить эти материалы как доказательство того, что вы можете самостоятельно обдумывать процесс работы и работать. Это, считаю, будет полезным.

    Еще идеи, возможно, примитивные для кого-то )

    • Каталог книг, которые есть в вашей домашней библиотеке
    • Автопостинг из вашего блога (на WP или самописного, что лучше) в вашей ленте в ВКонтакте ...
    Ответ написан
    Комментировать
  • Можно ли перенести лицензию 1С:Предприятия 8 на выделенный сервер?

    @LollyFox
    Программная лицензия 1С - это файл. Как и любой файл его можно скопировать на другой сервер, но смысла в этом нет никакого, т.к. в лицензии шифруются параметры сервера (мат.плата, ЦП, HDD/SSD, размер ОЗУ, Мак-адреса, БИОС и пр.). Поэтому, когда говорят про "перенести" лицензию 1С, то на самом деле речь идёт о получении совершенно новой лицензии с помощью резервного пинкода. В комплекте с поставкой при покупке идёт сразу три пинкода (один основной + два резервных). Если все три пина были использованы, то в центре лицензирования можно запросить следующий. Подробнее как это сделать есть тут.
    Количество таких обращений не лимитируется. Причем резервный пин-код можно запрашивать заранее, сразу как только был использован последний пин-код, а не когда лицензия уже слетит и потребуется следующий - на то он и называется "резервный".
    Ещё при "восстановлении" лицензии потребуется указать данные владельца лицензии точно также, как при первичной активации (с точностью до знака). Если эти данные не сохраняли в файл (по умолчанию имя файла licdata.txt), то эти данные лучше также заранее запросить в центре лицензирования до начала процедуры.
    Если все пинкоды и данные под рукой, то получение новой лицензии занимает максимум пару минут.
    Ответ написан
    Комментировать
  • Как сделать несколько background в Xcode?

    ivanvorobei
    @ivanvorobei
    iOS разработчик, канал https://t.me/sparrowcode
    Вам нужно разбить задачу на подзадачи. Давайте сформулируем:

    1. Как установить цвет фона перед показом контроллера
    2. Как устанавливать фон для контроллера
    3. Как менять фон у контроллера
    4. Как сменить фон по событию


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

    Как установить цвет фона перед показом контроллера?
    Дефолтные значения настраиваются в методе viewDidLoad. Вы правило подозревали в вопросе.

    Как устанавливать фон для контроллера?
    Вы можете установить фон к корневого вью. Но я бы предложил вариант с UIImageView, растянутой к краям родителя и установкой image. Это может в каком-то смысле инкапсулировать логику фона и заменить класс на более интересный/сложный в будущем.

    Как менять фон у контроллера?
    Чтобы менять фон, нужно иметь доступ к контейнеру картинки. К примеру вы сделали проперти backgroundImageView, тогда изменить image не составит труда:
    class ViewController: UIViewController {
       var backgroundImageView = UIImageView()
    
       func viewDidLoad() {
          super.viewDidLoad()
          backgroundImageView.image = UIImage()
       }
    
       func changeBackground() {
          // Пример смены фона по вызову функции. Объект UIImage должен быть ваш, для примера пустой.
          backgroundImageView.image = UIImage()
       }
    }


    Как сменить фон по событию?
    Нужно определить само событие. Если кнопка - тогда по таргету. Запись в БД - обсервер. Возможно подойдут системные нотификации, но вы с ними поосторожнее. В любом случае по любому из ивентов вы вызовете функцию, и в этой функции достаточно будет вызывать код из предыдущего вопроса.

    P.S. Ваш вопрос очень тривиален, и, если честно, именно поэтому на нем нет ответов. Вам стоит изучить основы, и после перейти к практическим задачам.
    Ответ написан
    Комментировать
  • С чего начать, чтобы войти в IT (не имея опыта и профильного образования)?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Начните ответа на вопрос: зачем?

    IT сейчас очень распиарено, но там нет быстрых и простых денег, собственно как всюду. Я не знаю как в вашем городе, в Киеве junior manual QA зарабатывает примерно 600$, оренда однокомнатной квартиры у черта на куличках от 200$. До 2к$ вам потребуются годы, в принципе это скорее всего и будет вашим потолком в роли мануальщика. Бывают случаи, когда человек как специалист быстро дорастает до senior, но это исключения. В вакансиях вы наверняка увидете темы в стиле: от двух лет опыта, как правило это ложь, ищут по больше.

    Бизнес аналитик в IT не особо отличается от бизнес аналитика вне IT. А вот от QA отличается очень сильно. Это примерно как сравнивать маляра и продавца-консультанта. Так что курсы QA вам вот ни как не помогут в направлении бизнес аналитики.

    Бизнес аналитик - это фактически внутренний аудитор, IT тут ни при чем. Бух учет и юриспруденция же вам могут в этом направлении помочь.

    Рекомендую внутри вашего же банка попытаться перепрофилироваться, вероятно в этом будет больше смысла.
    Ответ написан
    1 комментарий
  • Как посмотреть процент обновивших приложение пользователей в Google Play и AppStore?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    В консоле гугла.

    5f3ead2857937677834773.png

    Статистика. Настроить отчет.
    Устройства. Количество обновлений. Все устройства.
    5f3eaebe8da1d588725505.png
    Еще можно глянуть активные устройства в разрезе версий приложения.
    Ответ написан
    Комментировать
  • Какие есть бесплатные уроки по разработке простенького приложения под Андроид на Kotlin?

    NoSure
    @NoSure
    Hindu master coder
    Берешь здесь проект и разбираешься. Имхо туториалы какая-то лажа.
    Ответ написан
    Комментировать
  • Что выбрать Python Kivy или Kotlin?

    @dmshar
    А чего вы нас тут спрашиваете? Мы ведь не видели вашего приложения. Мы не знаем вашей квалификации. И мы не знаем, на сколько можно доверять совету вашего знакомого. По хорошему, если он дал вам совет, то скорее всего его обосновал - почему это решение не рационально (вообще? или для вашего конкретного случая?). Вот эти его обоснования уже могут быть предметом обсуждения - на сколько они профессиональны, компетентны и на сколько они соответствуют тенденциям в современном "приложениестронии".
    А пока абстрактное приложение, абстрактный разработчик, абстрактные условия, абстрактные умозаключения - обсуждать-то нечего.
    Ответ написан
    2 комментария
  • Как выполнять бекап MSSQL в сетевую папку, защищенную паролем?

    hint000
    @hint000
    у админа три руки
    Как SQL сообщить логин и пароль от доступа к папке?
    Насколько я понимаю, вы пытаетесь делать через план обслуживания. А вы вместо этого делайте cmd-скриптом через планировщик заданий. В cmd-скрипте легко можете прописать подключение сетевого диска с указанием пароля,
    net use p: \\192.168.1.100\backup p@$$w0rd /USER:vpupkin
    а затем уже команду резервного копирования базы.
    set DATABASENAME=ИмяБазыДанных
    set DATESTAMP=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%-%time:~0,2%-%time:~3,2%
    if "%time:~0,1%" == " " set DATESTAMP=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%-0%time:~1,1%-%time:~3,2%
    set BACKUPFILENAME=p:\%DATABASENAME%-%DATESTAMP%.bak
    set OSQL="C:\Program Files\Microsoft SQL Server\120\Tools\Binn\OSQL.EXE"
    %OSQL% -E -Q "BACKUP DATABASE [%DATABASENAME%] TO DISK='%BACKUPFILENAME%' WITH FORMAT"
    Ответ написан
    Комментировать
  • Почему 1С требует лицензию, после загрузки базы через конфигуратор?

    @LollyFox
    1С:Упрощенка по сути это та же базовая версия 1С:Бухгалтерии.
    Если ваш файл с расширением .dt был выгружен из версии ПРОФ, то после загрузки программа и должна была запросить пин-код из 15 цифр для получения ПРОФ лицензии, т.к. имеющаяся у вас лицензия от 1С:Упрощенки не позволяет работать с копиями баз от ПРОФ.
    Если вам нужно поработать с этой базой временно, то можно попробовать загрузить базу в облако - многие облачные провайдеры 1С (тот-же 1С:Фреш например) на первый месяц предоставляют доступ к облачной 1С бесплатно.
    Если же требуется работать с этой базой далее постоянно, то можно попробовать конвертировать ее из ПРОФ в базовую версию, но только при условии, что конфигурация типовая и учёт вёлся от лица только одной организаций.
    Если вы планируете и дальше работать с бухгалтером по удалёнке, то советую полностью перейти на облачную бухгалтерию - в этом случае больше не нужно будет заниматься ерундой с выгрузкой/загрузкой баз и несовпадением версии и лицензии. Облачная версия позволяет одновременно работать с одной и той же базой нескольким удаленным пользователям, например, менеджеры в офисе могут выписывать первичку, а в это же время бухгалтер может заниматься своими делами, никто не будет друг другу мешать и все данные будут попадать в базу в режиме онлайн.
    Ещё конечно есть вариант купить лицензию ПРОФ, но надо смотреть по ситуации.
    Ответ написан
    2 комментария
  • Где учить sql и Mysql?

    myks92
    @myks92
    Нашёл решение — пометь вопрос ответом!
    • SQL - язык, если точнее, множество стандартов языка. Вы можете написать запрос на SQL, но исполнить его может только конкретная СУБД.
    • MySQL / MariaDB / PostgreSQL - различные реляционные СУБД, выполняющие запросы.
    • PhpMyAdmin / MySQL Workbench / DBeaver - приложения, для удобной работы с различными СУБД.

    Ключевое различие между SQL и MySQL заключается в том, что SQL — это язык запросов для управления данными в реляционной базе данных, а MySQL — это система управления реляционными базами данных с открытым исходным кодом для управления базами данных с помощью SQL.
    Ответ написан
    Комментировать
  • Совместим bitrix (v20.0.1198) и php7.4?

    gromdron
    @gromdron
    Работаю с Bitrix24
    TLDR: Пока рано.

    Update: Прошу прощения. Напутал с версии: с 01.08.2020 будет требовать php 7.2, но рекомендуется php7.4


    Имея опыт в системном администрировании (как минимум подкрутить настройки php), программирования (php) и знания работы битрикса, вы можете запустить его на php 7.4 и он даже будет работать (по большей части). Он заведется, но корректно работать на все 100% не будет.

    Официально обьявлено, что с 1 июля (или июня) 2020 года платформа будет требовать php 7.2. Предполагаю что за несколько дней до релиза выйдет обновление, которое заменит str*-функции на mb_* функции и вы сможете использовать последнюю версию платформы на php 7.4.

    Если Вы используете bitrix env, то повышение версии php выйдет несколько позже (как всегда опоздают).
    Ответ написан
    3 комментария
  • Где учить Android?

    Комментировать
  • 1с как сделать простой таймер на форме?

    @Dementor
    программист, архитектор, аналитик
    Для тех, кому лень смотреть ролик, суть:

    При запуске "таймера" запускается обработчик ожидания (у топикстартера 1 секунда, но чтобы было без рывков рекомендую 0.1 секунду), который проверяет текущее и запланированное время, и обновляет форму; по достижению запланированного времени обработчик отключается.

    У начинающих и тех, кто перешел на программирование управляемых форм с обычных или с 7.7, может возникнуть вопрос: зачем тут обработчик ожидания? Дело в том, что в режиме управляемого приложения все процессы в рамках управляемых форм запускаются последовательно. Если вы запускаете цикл с ожиданием конца времени, изменяете состояние формы и даете команду на обновление интерфейса, то пока ваш цикл не закончится, форма не будет обновляться. Со стороны пользователя это будет выглядеть как Старт, все зависло, сразу Финиш. При использовании обработчика ожидания платформа выполнит код процедуры обработчика, перерисует форму, а после указанного таймаута снова все повторит.

    Таймер - это для студентов, а на практике нужно выводить текущее состояние из фонового процесса, который запущен на сервере. Обычно это разные сеансы и нужно организовать их общение через объекты базы или другими методами.
    Ответ написан
    Комментировать
  • Как реализуются интерфеинтерфесы в Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Видимо не достаточно понимаете =)
    Когда вы имплементируете интерфейс, к примеру Runnable, то вы реализуете метод run(). Вы его не переопределяете а реализуете, это не одно и тоже с переопределением. В JAVA есть класс Thread в котором объявлено что он знает интерфейс Runnable(вполне конкретный) и что в нем совершенно точно есть реализация метода run(), других методов которые не объявлены в интерфейсе не знает.
    Например если вы создатите свой интерфейс:
    interface MyRunnable{
          void run(); 
    }

    То класс Thread никак не будет знать что это и что с ним делать и пошлет вас в веселую пешую прогулку.
    Даже если вы создатите "однофамильца":
    interface Runnable{
          void run(); 
    }

    То класс Thread никак не будет знать что это и что с ним делать и пошлет вас в веселую пешую прогулку. Потому что это не реализация java.lang.runnable.
    Зато такой момент сработает:
    interface MyRunnable extends Runnable{
          void some(); //Обратите внимание что тут уже run нельзя объявить т.к. он объявлен в  Runnable
    }

    и при реализации этого интерфейса вас заставят реализовывать уже 2 метода
    class CoolRunnable implements MyRunnable{
          void some(){System.out.print("some from MyRunnable")} 
          void run(){System.out.print("run from Runnable")} 
    }

    И в этом случае класс Thread увидит что класс CoolRunnable реализует интерфейс Runnable в котором есть метод run() о котором он знает и который ему нужен. Метод some() он не увидит. При запуске соответственно он выведет только "run from Runnable".

    Если попробовать на пальцах объяснить так сказать по аналогии с чемто. Скажем вы класс который может нажимать на левую кнопку мыши. Ничего другого вам не объясняли. Т.е. вам дали описание что это называется мышь и на котором есть кнопка слева и которую нужно нажать. Теперь любой производитель берет это описание и реализует мышь с левой кнопкой. Каждый свою, из разного материала, с разными механизмами кнопки и принципами работы, разной формы, и даже с кучей других кнопок. Все они попадают к вам, вы смотрите что конкретный экземпляр мыши реализован по описание которое вы знаете, кроме того это именно то описание что у вас а не одноименное. На основе этого вы признаете что эта вещь вам подходит и начинаете нажимать левую кнопку мыши на любой такой мышке которую вам дадут. Если же приходит другой предмет то вы ломаете палец, потом руку и умираете от потери крови с криками что это не по описанию что у вас есть.
    Ответ написан
    Комментировать
  • Чем интересен enterprise?

    inoise
    @inoise Куратор тега Карьера в IT
    Solution Architect, AWS Certified, Serverless
    Enterprise это характер управления. Если ты хорошо работаешь на потоке и не рвёшься вылезать за рамки должностных инструкций то тебе туда. За рамками Enterprise ответственность чаще размыта между разными ролями, да и делать приходится больше. В Enterprise больше порядка, но меньше самодеятельности.

    Как-то так
    Ответ написан
    4 комментария
  • Rust - ещё один убийца c/c++?

    @deliro
    Rust лучше С/С++ во многих (наверное, почти всех) аспектах. Но в сравнении с С++ и тем более Си он слишком молод. Непопулярность языка ещё обуславливается тем, что рынок полностью забит Си и плюсами — миллионы строк кода и библиотек уже написаны на С/С++. Кто их будет переписывать?

    Так же, не было никакой значимой маркетинговой кампании по популяризации Rust. Я случайно услышал об этом языке на Moscow Python Conf++, до этого я думал, что когда говорят про Rust, имеют ввиду игру.

    Плюс, Rust — язык очень нишевый, как и С/С++. И эта ниша — системное или околосистемное программирование. Операционные системы, драйвера, высокопроизводительные системы, игровые (и любые другие) движки, embed — вот удел раста. И в этих сферах не принято, как, например, в JS'е менять фреймворки и версии языка раз в неделю. Сообщество там крайне консервативное.

    К тому же, у Rust очень высокий порог входа. Вот прям очень. Если в контексте C++ постоянно шутят про книги "выучить С++ за 24 часа", то в контексте Rust можно шутить над книгами "выучить Rust за неделю". У их прекрасной парадигмы zero-cost abstractions на самом деле есть cost — сложность понимания. За отсутствие сборщика мусора и необходимости чистить за собой память придётся заплатить многими часами войны с компилятором, а именно — с borrow checker'ом. И это только одна сложность

    Когда начинаешь понимать Rust, всё идёт прям отлично. Но до этого момента придётся пройти ад и Израиль, который С/С++'еры не хотят проходить. Потому что они уже его прошли, когда учили С/С++ и там было намного хуже.

    Я бы очень хотел, чтобы Rust заменил С/С++, он объективно лучше. Но вряд ли это произойдёт в ближайшие лет 10
    Ответ написан
    6 комментариев
  • Какие задачи решают на Rust, а какие на Golang?

    bingo347
    @bingo347
    Crazy on performance...
    Какие задачи решают на Rust
    любые. Rust - язык общего назначения, применимый к большинству возможных задач. Rust достаточно высокоуровневый для написания на нем прикладного ПО и компилируется в достаточно эффективный машинный код, для применения в ядрах ОС, драйверах или embedded разработке. Так же Rust на сегодня имеет самый маленький размер при компиляции в wasm, что критично для использования в web. Я честно не знаю такой сферы, к которой бы не подошел Rust.
    Единственной проблемой в применимости Rust я вижу недостаточную его распиаренность в РФ, что часто бывает самым важным критерием для "манагеров" и прочих людей принимающих решения о используемом стеке.
    а какие на Golang
    Golang тоже язык общего назначения, но имеющий ряд ограничений:
    - Крайне тяжелый рантайм не дает возможность использовать его в wasm, embedded или компонентах ядра.
    - Необходимость в сборке мусора опять таки ограничивает разработку для embedded или компонентов ядра.
    - Отказ от llvm в качестве бэкенда компилятора ограничивает число целевых платформ.
    Можно один заменить другим?
    Rust спокойно заменяет Golang в любой возможной на последнем задаче, наоборот же иногда имеем ряд ограничений.

    Вместо P.S.:
    Golang скорее всего окажется более быстрым для прототипирования и быстрого старта. Однако отсутствие полиморфизма в любом виде (утиная типизация не в счет) и ограниченность одной парадигмой структурного программирования делает этот язык крайне дорогим в поддержке. Так же этому (и быстрому прототипированию и дорогой поддержке кода) способствует лютая ненависть создателей языка к принципу DRY.
    Rust имеет такую редкую сегодня строгую типизацию, одним из нюансов которой являются концепции владения и заимствования (которые позволяют делать автоматическое управление памятью в compile time), что порождает с одной стороны высокий порог входа в технологию (что сглаживается человекопонятным выводом компилятора, если входящие умеют читать, что еще более редко встречается сегодня, чем строгая типизация), но так же удешевляет поддержку продукта длительное время. Так же надо понимать, что Rust не спасет от кривых рученок быдлокодеров (разве что они не смогут его освоить), так как при большом желании можно сделать и утечки памяти и дедлоки и гонки данных (хотя в Golang это все сделать на порядок проще).
    Ну и надо не забывать, что много где присутствует hype-driven-development и Golang распиарен, а Rust нет.
    Ответ написан
    3 комментария
  • Где учиться IOS Разработке?

    stewart-baxter
    @stewart-baxter
    ctrl + C / ctrl + V
    Автор, курсы на русском языке всегда будут отставать в актуальности информации, чтобы быть "на волне", придется все же осваивать английский.
    1. Вместо того чтобы платить сто500 тысяч денег всяким ГБ, советую вложиться сюда https://www.udemy.com/course/ios-13-app-developmen... .Понятный английский + субтитры (двойная выгода), не нудный лектор (как во многих рашн курсах), обновляемая информация и буквально с первых же лекций делаем свои мини-аппки и подтягиваем английский.
    2. Параллельно можно купить книгу В.Усова "Основы разработки приложений под iOS, iPadOS и macOS 5-е издание" (https://swiftme.ru/product/swift-osnovy-razrabotki... - электронная версия на сайте автора), или бумажная, если так удобнее.
    Проходить, не распыляться на 50 курсов сразу, сосредоточиться и учиться каждый день.
    По ходу учебы будут возникать вопросы, учимся правильно гуглит, заводим аккаунт на https://stackoverflow.com/, можно чекнуть чатики в телеге:
    https://t.me/usovswift
    https://t.me/joinchat/BAn0BkLMGrfpDYy2cnysNg
    https://t.me/swiftbook_chat

    Удачи! Надеюсь, после этого поста не будет еще одного "Где учиться ЯП" Где учиться на Data Scientist? ;)
    Ответ написан
    1 комментарий
  • Какой язык программирование yчить новичкy?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть два взгляда и два фунтаментальных подхода к вопросу.

    1) Если вы хотите учить язык чтобы заработать деньги - откройте местные сайты типа work, job, rabota, linkedin e.t.c.
    и просто посмотрите какие специалисты требуются на рынке и сколько им платят. Смотрите в разрезе вашего региона или края. Мой личный опыт (опыт ent. разработчика для бизнеса) подсказывает что основные трендовые языки разработки это Java/C#). Это языки - долгоиграющиее. Первому уже более 20 лет. И есть огромный пласт ПО который уже написан на них и требует поддержки и внесения изменений. Этот пласт ПО - вечен. Ему нет замены и вы будете всегда обеспечены работой. Чисто ради смеха отмечу что есть язык COBOL на котормо в своё время был написан пенсионный фонд США и этот язык до сих пор востребован несмотря на то что его синьоры уже отрастили бороды и вышли на пенсию а то и померли.

    2) Если вы хотите учить язык для души или ради забавного мозгового эксперимента - учите Haskell, Lisp. Эти языки интересны как вещь в себе и вы можете бесконечно много времени медитировать над их исходниками и ваше восхищение или нирвана не будет иметь пределов. Не спрашивайте меня по практическому их приминению. Это языки - концепты. Смысл которых - генерация идей. А не решений. Решения же потом переходят в Java/C#/C++ уже как конкретные подходы. Но сначала эти идеи проходят вызревание в инкубаторе языков функциональной разработки таких как Хаскель и ЛИсп.
    Ответ написан
    2 комментария