• Какая самая перспективная и востребованная отрасль в С#?

    @spaceatmoon
    Вначале писал как ответ на ваш вопрос про разные языки и решил отдельным ответом сделать.


    Со своей стороны скажу php, он очень востребован. Простой язык, половина возможностей носят рекомендательный характер и сильно зависит от команды, в частности от их силы в программирование. Мне попадались хорошие ребята, а попадали очень не очень, но всё конечно же зависит от ваших навыков.

    Минус PHP в отсутствии однородности экосистемы. В РФ есть 3 главных фреймворка Symfony, Laravel, Yii2 и дальше 0.5% другие. Каждый из них тянет лямку на себя и составляют долю по грубому 33%. Каждый фреймворк богат на возможности, решают одну и туже проблему, но это всё равно что react/vue/angular. Свои подходы, методы и быть профессионалом в каждом нельзя. Соответственно список вакансий уже не такой большой как кажется, ведь потом явно появится какое-то предпочтение. Например у меня в blacklist однозначно стоит Yii2.

    Также минус PHP в его направленности чисто на веб. Рано или поздно устаешь и хочешь возможности сделать обычное Windows приложение, игру, бинарник. Ведь PHP сильно зажат в этом плане, даже не так, там в принципе ничего нет на эту тему и не будет никогда. Только веб, но он прекрасен местами.

    Ещё можно рассмотреть Python/Django.

    В любом случае стоит ориентироваться на удалённую работу если вы не в СПБ и Москве. Лично в моём мухосранске какую технологию не выбери, максимум 1-3 контора нормальная. Остальные что-то мутят или в подвале сидят.

    Выбирай по зову сердца, иначе тошнить уже будет на 2 неделю. Я сейчас изучаю C# в частности asp.net, wpf. Даже по этим направлениям информации выше крыши.
    Ответ написан
    Комментировать
  • Что делать с этой формой?

    @Dementor
    программист, архитектор, аналитик
    Создал форму, сохранил, запускаю 1С Предприятие, нажимаю Файл\Открыть. Открывается моя форма.
    Поздравляю - вы стали программистом 1С!

    Это всё для чего она нужна?
    Окружающему миру ваша форма в таком виде даром не нужна - увеличивает энтропию и приближает к гибели вселенной. Но вы можете наполнить свою форму полезным содержимым.

    Для чего нужно именно таким способом её создавать?
    Это многогранный философский вопрос. Одним из возможных вариантов ответа на который может быть - вы просто по другому не умеете.

    Её куда-то можно передать, как готовую форму?
    Да.

    Как?
    Снова очень широкий вопрос. Можно скопировать из вашей обработки и вставить туда, куда хотите. Можно внести в справочник внешних обработок и она станет частью учетной системы: будет открываться в качестве внешней печатной формы или внешнего обработчика табличных частей документов.
    Ответ написан
    Комментировать
  • Что лучше выбрать?

    Cuoca
    @Cuoca
    Подумайте об образе жизни, который хотите вести.
    SAP - это командировки, если вы хотите развиваться и получать больше 150к. Если вы согласны на меньшее, то обоснуетесь в сервисной компании и будете там вариться. SAP - это переработки. Т.к. всё завязано на бизнес-циклы компаний, вы должны ориентироваться на периоды производственной, бухгалтерской и налоговой отчетности вне зависимости от позиции ( конс или разраб). Например, свалить покататься на лыжах в декабре-январе-феврале-марте может быть проблемой (закрытие года, закрытие 1 квартала параллельно). Просто могут не отпустить или отправить в командировку (если вы работаете на таком модуле).
    Про фронтэнд ничего сказать не могу, но в SAP нет такого потока обновлений, что вам постоянно требуется бесперебойно учиться, чтобы не оказаться за бортом трудового рынка.
    Сейчас все активно переходят или завершают переходы на HANA, так что вы можете удачно въехать на рынок, т.к. всем, кто работал до этого, тоже надо будет доучиваться/переучиваться. Это даёт вам некоторую фору.
    Главный плюс - SAP очень интересный и очень большой. Если вы любите копаться, ковыряться и понимать как тут это вообще всё взаимосвязанное работает, надо брать.
    И еще надо учесть, что если вы хотите идти консом по функциональному направлению, то ваша работа больше про понимание бизнес-процессов и знание и выполнение настроек своего модуля и хорошее ориентирование в смежных. Если бизнес попросит что-то новенькое, то кодить будете не вы, а разраб, ТЗ которому вы поставите.
    Ответ написан
    Комментировать
  • Стоит ли учить Spring если не знаю некоторые темы?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый день.
    Все вышеперечисленное вами составляют базис языка Java. Возможно, что на начальном этапе вам не нужна многопоточность, но в любом случае знание основ java будет не лишним.

    но я не знаю такие темы как Аннотации, Коллекции, Обобщения, Многопоточность и т. д.

    Аннотации используются во всех современных библиотеках и фреймворках. Нужно знать хотя бы как они работают. В Spring, Hibernate также используются аннотации.
    Коллекции (JCF) - как по мне обязательный минимум, который нужно знать. В Spring вам придется работать с коллекциями.
    Обобщения (generics) - также достаточно широко используется, в том числе и в Спринг. Например, банальный конвертер (интерфейс Converter<S, T> и т.д.).
    До изучения Spring я бы рекомендовал вам изучить следующее:
    1) основы языка Java (все то, что вы перечислили выше).
    2) Ознакомиться с Java EE (сервлеты), глянуть на jdbc
    3) Изучить SQL (поиграться чуть с БД - MySQL, PostgreSQL и т.д.)
    4) Изучить Hibernate (ORM для работы с БД).
    5) Изучить TCP / IP. Изучить http методы (GET, POST, PUT и т.д.). Возможно, ознакомиться с сокетами.
    и только потом уже с имеющимися знаниями изучить Spring. При изучении Spring уже можно смотреть в сторону АОП и потихоньку изучить Spring AOP и т.д.
    Вот, курс по Spring Framework - https://www.youtube.com/watch?v=5ePo08sqcpk
    Курсов по Spring Boot полно. Есть неплохие на Udemy. Не лишним будет также изучение документации самого фреймворка. Также можете прочитать книгу Spring Boot in Action.

    Стоит ли мне учить Spring и доучивать эти темы вместе или сначала учить эти темы потом перейти к Spring?

    Сперва изучите эти темы, а потом уже Spring.

    https://javastudy.ru/interview/jee-spring-question...
    Ответ написан
    2 комментария
  • Подсистемы, назначение списков?

    @kalapanga
    По-моему, Вы в гугле задаёте совсем не тот вопрос, что Вас интересует. Найденные ответы не имеют отношения к проблеме. Ну вот грубо по пунктам:
    2) Сотрудники "почему-то не отмечена бухгалтерия". А бухгалтерии не интересен каждый сотрудник по отдельности. Она учтёт в расходах предприятия одну общую сумму - зарплата всех сотрудников. А каждым отдельным сотрудником видимо будет заниматься подсистема Зарплата.
    3) Номенклатура "что это вообще". Список услуг, которые оказывает предприятие клиентам, и список материалов, которые требуются для оказания этих самых услуг. "Покраска стен" - услуга. "Банка краски" - материал. Вот это будут элементы справочника Номенклатура. Имеет отношение ко всем подсистемам кроме Зарплаты.
    4) Склады "почему нет галочки бухгалтерии". Склад - это конкретное физическое место, где лежит допустим та самая банка краски. Складов может быть несколько. А бухгалтерии нужно только знать, что у организации есть столько-то краски, на такую-то сумму.

    Всё это деление условное, это видение разработчика. Можете поставить все галки - ничего не сломается. Но зачем человеку, который занимается в организации кадрами и зарплатой информация о клиентах? Как минимум лишняя, а возможно ему и не положено её видеть!
    Ответ написан
    Комментировать
  • Как сделать диапазон цены в 1с?

    @twistfire92
    Python backend developer
    В обработчике ПриИзменении

    Можете завести отдельный регистр, в котором будете хранить допустимые диапазоны цен для каждой позиции. Измерение - ссылка на справочник товаров, ресурсы - минимальная и максимальная цена.
    В обработчике ПриИзменении уже проверять подходит ли новая цена под эти границы.
    Ответ написан
    Комментировать
  • Подойдет ли ms sql express-версия для создания бд где планируется около миллиона записей?

    quality
    @quality
    admin, supp: windows,linux; ubiquiti,mikrotik.
    Добрый день. Установите локально express редакцию, создайте таблицу и поля, внесите 1 запись (+- что планируется вносить) и посмотрите запросом размер строки. И методом простой математики, узнаете ответ на ваш вопрос.
    Ответ написан
    Комментировать
  • Как работает веб-сервер и node js в связке? Зачем нужен Nginx?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    Самое простое - nginx отдаёт статику. На больших объёмах делать это через Ноду неэффективно.
    Посложнее - nginx позволяет управлять ходом запроса. Например, редиректить на https.
    Ещё сложнее - можно настроить nginx, чтобы он умно балансировал запросы между несколькими бэкендами и автоматом блокировал слишком частые попытки подключения.

    Nginx очень хорошо в промышленных масштабах делает определённую часть работы, связанной с http-запросом, поэтому ему эту часть работы и делегируют.
    Ответ написан
    Комментировать
  • Стоит ли начинать карьеру в SEO?

    @pcdesign
    Идти в сеошники, все равно как идти в шаманы. Как в шаманизме постучал эдак по бубну и пошел дождь, а эдак снег. Исключительно опытный путь, методы проб, ошибок и экспериментов. Тоже самое и в сео.

    Алгоритмы поисковых систем закрыты, никто не сможет, кроме программиста яндекса или гугла объяснить почему этот сайт находится на 1-ом месте в поисковой выдаче. Все что остается это экспериментировать. При большом кол-ве экспериментов собирается некая статистика, после которой сайты можно научится поднимать наверх в поиске.
    И в этом случае бизнес будет готов отдавать любые деньги.

    Но вы всегда будете как эйнштейновый человек вне ведении истинной картины:
    «В нашем стремлении понять реальность мы отчасти подобны человеку, который хочет понять механизм закрытых часов. Он видит циферблат и движущиеся стрелки, даже слышит тиканье, но он не имеет средств открыть их корпус. Если он остроумен, он может нарисовать себе некую картину механизма, которая отвечала бы всему, что он наблюдает, но он никогда не может быть вполне уверен в том, что его картина единственная, которая могла бы объяснить его наблюдения. Он никогда не будет в состоянии сравнить свою картину с реальным механизмом...»
    «Эволюция физики» А.Эйнштейн, Л.Инфельд.
    Ответ написан
    1 комментарий
  • Как хостить 100+ баз 1С?

    Jump
    @Jump
    Системный администратор со стажем.
    Сервер на windows (есть мысль, что во всём виноват он, так ли это? стоит ли переехать на линукс?)
    Нет. Быстрее на линуксе работать не будет.

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

    Если предположить что базы файловые то -
    1. Обратить внимание на клиентские компьютеры которые работают с базой - SSD и8гб озу обязателны. Именно на клиентах. Ну и настройка процессора на максимальную производительность.
    2. Сеть, и организация шары. Сеть должна быть нормально настроена и работать четко.
    3. Базы на сервере на SSD желательно, обязательно форматировать диск под базами с размером кластера 8к.
    4. Обратить пристальное внимание на обслуживание БД. Регулярно проводить реиндексацию и сжатие баз. В процессе работы, а особенно при обновлениях базы распухают - а это все приходится тащить по сети.


    В общем при нормальной настройке база должна открываться примерно за 1-2минуты. Быстрее не получится. А этих результатов достичь вполне реально.

    Из явно видных проблем - raid 1 из 2-х дисков.
    Сразу возникает подозрение что на этом массиве установлена система и лежат базы. Так делать нельзя.
    Сделали рэйд под систему - отлично. Но под базы будьте добры выделить отдельный диск или рэйд.
    Ответ написан
    Комментировать
  • Какие версии Delphi сейчас актуальны для разработки desktop-приложения?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    Актуальны все версии после 10.х.
    RAD Studio - это среда разработки, которая позволяет писать и на Delphi и на C++
    Delphi - это среда, в которой можно писать только на Delphi.

    Использовать всегда стоит самую последнюю версию. Последняя бесплатная версия (Community Edition) - это 10.3.3.
    Ответ написан
  • WPF Каким образом можно передать данные из СоmboBox одного окна в Label другого окна?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. Думаю, простым и надёжным способом будет передача нужных данных через конструктор второго окна. Стандартно он создаётся без параметров, но мы можем дописать их туда. Написал код и снабдил его комментариями, думаю так будет проще разобраться.
    Код XAML главного окна (MainWindow):
    <Window x:Class="ComboBoxResultToAnotherWindow.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:ComboBoxResultToAnotherWindow"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <StackPanel>
            <ComboBox Name="cbPat" Margin="100" Height="30"/>
            <Button Name="openSecondWindowButton" Width="100" Height="40" Content="Second Window" Click="OpenSecondWindowButton_Click"/>
        </StackPanel>
    </Window>


    Код XAML второго окна (SecondWindow):
    <Window x:Class="ComboBoxResultToAnotherWindow.SecondWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:ComboBoxResultToAnotherWindow"
            mc:Ignorable="d"
            Title="SecondWindow" Height="450" Width="800">
        <Grid>
            <Label Name="labelWindow2"></Label>
        </Grid>
    </Window>


    Код C# главного окна (MainWindow):
    // Основное окно
        public partial class MainWindow : Window
        {
            // Тестовый список элементов, здесь я взял строки, но вы можете взять другой источник данных
            // и другой тип данных. Можете изменить способ их получение, вобщем как сами посчитаете необходимым
            List<string> elements = new List<string>() { "first", "second", "third" };
    
            // Конструктор основного окна
            public MainWindow()
            {
                InitializeComponent();
    
                // Привязываем элементы к комбобоксу
                cbPat.ItemsSource = elements;
            }
    
            // Обработчик события нажатия на кнопку
            private void OpenSecondWindowButton_Click(object sender, RoutedEventArgs e)
            {
                // Создаём объект, представляющий второе окно с лэйблом, на котором будем отображать данные
                // В конструктор передаём выбранный в комбобоксе элемент (мы изменили конструктор второго окна,
                // соответствующим способом). Данные преобразованы к нужному типу.
                SecondWindow secondWindow = new SecondWindow((string)cbPat.SelectedItem);
    
                // Показываем окно
                secondWindow.Show();
            }
        }


    Код C# второго окна (SecondWindow):
    // Второе окно
        public partial class SecondWindow : Window
        {
            // Конструктор изменён соответсвенно для приём строки, или другого элемента,
            // необходимого вам
            public SecondWindow(string element)
            {
                InitializeComponent();
    
                // Устанавливаем содержимое лейбла элементов, полученным в качестве аргумента
                labelWindow2.Content = element;
            }
        }


    У меня всё получилось. Выбрал в комбобоксе нужный элемент, нажал на кнопку, открылось окно, а там на лейбле выбранный элемент.
    Ответ написан
    2 комментария
  • Какие книги по C++ актуальны на 21 год для обучения с нуля?

    @res2001
    Developer, ex-admin
    Для начала берите любую книгу для начинающих. Лафоре подойдет. Берите издание по свежее. Есть и другие книги подобного рода, конечно.
    Страуструп тяжел и не годится для старта.
    Саттер, Мейерс больше для продвинутых.
    C++ Templates для старта точно не нужен.
    Так же не плохо было бы начать что-то читать по алгоритмам.

    Сейчас проблема с изучением С++ в том, что с 2011 года начали регулярно появляться новые стандарты, в них появляются фишки, которых раньше не было, некоторые из них очень полезные. Толстые учебники не успевают переписываться под актуальные стандарты. Но это не большая беда.
    Базовым сейчас является стандарт С++11 (или С++14 - это дополнение к С++11), его применяют уже многие. Более поздние (17, 20) применяются реже, так что можно не гнаться за тем, чтобы в книге они были освещены. Базовые понятия в С++ в целом мало изменились с древних времен. Но кое-что добавилось.
    Кстати, проблема с поддержкой новых стандартов актуальна не только для книг, но и для компиляторов языка.
    После освоения базы и начала практической деятельности сможете дальше продвигаться в изучении языка, ориентируясь на свои реальные потребности.
    Главное в изучении - больше практики - не зацикливайтесь на книгах. В начале старайтесь делать задания из книг. Когда более-менее освоитесь, переходите к своим задачам/интересам.
    Ответ написан
    1 комментарий
  • Запрет на редактирование строки в Mysql по ID?

    @Miron11
    Пишу sql 20 лет. Срок :)
    снимите привилегии пользователей, которые сейчас созданы в базе данных. Оставьте им право читать. Особое внимание уделите административным учетным записям, например root. В моей практике мне не приходилось защищать конкретно MySQL, поэтому я не знаю, можно ли изменить имя пользователя root, если можно, сделайте это, конечно же изменив его пароль.
    Сделайте специальный логин, которому присвоено разрешение изменять данные. Запомните пароль этого пользователя и сложите его в сейф. Ключ от сейфа повесьте на шею и никому не давайте.
    Сделайте так, чтобы вход с паролем этого пользователя имел отдельный доступ к базе данных. Чтобы его не надо было выводить где - то в конфигурации программы, обеспечивающей работу сайта. Входите в этот счет с паролем через защищенное приложение так, чтобы никто не смог ни увидеть ваш пароль, ни считать его через какие - то устройства, в частности тех, которые слушают что передается по сети. В принципе все современные программы, которые приходят с продуктом защищают пароль логина. Но детали могут быть существенны, прочтите документацию, если есть сомнения. Там как правило описывается хорошо ли защищен сам процесс присоединения к базе данных тем или иным устройством.
    Ну и наконец, защитите таким же подходом машину на которой установлена база данных и сайт.
    В конце - концов, если с первой попытки не получится, и кто - то продолжит "безобразничать", повторите цикл, только теперь уже с некоторым опытом прежней тренировки.
    По мере работы над этой областью рано или поздно Вы столкнетесь с тем, что либо человек, либо какой - то процесс установленный либо на машине, либо в самом приложении сайта, выполняет подмену указателей адресов, либо заметив этот процесс и сличив временные метки записей - их изменений, либо заметив, что кто - то присоединился к базе данных без разрешения с высоко привилегированным пользователем. Обнаружить это можно так же установив триггеры на таблицах, фиксирующие изменения, включая время записи имя учетной записи и значение поля до изменения и после. Проблема в том, что Ваша база в данный момент эксплуатируется не по назначению неким третьим лицом, и это лицо может исказить и эти трассировочные записи, поэтому на начальном этапе необходимо все - таки изолировать пользовательские записи и засекретить вход имеющий привилегии менять данные и административно распоряжаться ресурсами.
    Ответ написан
    4 комментария
  • Как Apache Spark будет параллельно(или не) брать и обрабатывать данные?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Ууу... три года назад вопрос задан.
    Так не интересно :)
    Но попробую ответить, все-равно. Даже зная, что автор наверное поднаторел и возможно может ответить на свой вопрос сам, намного лучше.
    Итак.
    1. Спарк все и всегда делает параллельно. Вопрос лишь в том, дает ему пользователь выполнить параллельный запрос используя 2 или больше, так называемых "executor(s)", по русски наверное "выполнимых".
    Выполнимый это просто java.exe выполнимый. Кроме того, что это выполнимый, это тот ( или те ) выполнимый(ые), которые и выполняют такие операции, как считывание файлов, запись файлов, jdbc, spark sql и другие запросы.
    В зависимости от конфигурации Spark их может быть один или больше.
    Как правило эти executors запускаются на машинах, которые распределены в сети, и физически отделены друг от друга. Есть настройки, которые устанавливают сколько именно executors могут быть запущены на этом массиве машин.
    Машины эти, в свою очередь, называются "worker nodes".
    Кроме worker nodes несущих executors Spark требуется driver. И хотя на этом драйвере так же выполняется java.exe, в свою очередь этот выполнимый не входит в счет executors, за исключением того случая, когда Вы работаете с Spark в режиме локальной консоли "spark-shell". При запуске Spark в режиме локальной консоли все возможности Spark по параллельному распределенному выполнению заданий сводятся к немного больше, чем нулю.
    Да, никто не мешает создать Thread и запустить её параллельно, но это уже не совсем Spark, но собственный код.
    Итак, как же добиться, чтобы Spark выполнил задание параллельно, пользуясь встроенными в Spark возможностями.
    Часть ответа уже прояснилась - надо запустить Spark кластер, по крайней мере с одним worker на котором надо отконфигурировать и запустить 2 или больше Executors. После чего надо выполнить задание, которое Spark умеет выполнить параллельно.
    При этом надо всегда помнить, что Spark попытается оттянуть выполнение задание как можно больше, а вместо выполнения задания, при вызове той или иной функции, запомнить некий план выполнения, который будет выполнен в будущем. Такой план называется DAG ( direct acyclic graph ).
    Хорошим примером операции, которую Spark выполняет одновременно несколькими потоками, это считывание файлов из директории
    spark.read.format("json").load("my_path_to_json_files/files_subdirectory/*.json")
    хотя и не прочитает файлы, как таковые, но создаст DAG, при этом воспользовавшись thread равным по количеству executors. То есть уже некоторые аспекты параллельного выполнения появляется.
    Далее, если Вы выполните следующую линию, запомнив этот DAG в неизвестном
    val df = spark.read.format("json").load("my_path_to_json_files/files_subdirectory/*.json")
    а следующим шагом, допустим, запишете этот же список файлов в формате parquet в другой файловой системе, например

    val df = spark.read.format("json").load("my_path_to_json_files/files_subdirectory/*.json")
    df.write.format("parquet").save("my_path_to_parquet_files/files_subdirectory")

    Spark воспримет эти две линии как команду создать, так называемую job, в рамках этой job Spark задаст executors их собственные Tasks в рамках этой самой job, и по мере выполнения Task на executors будет продвигаться к тому, чтобы выполнить всю Job, при этом заметьте
    задание будет выполнено параллельно
    и
    независимо друг от друга, теми самыми Тhreads.
    Стоит заметить, что если Job задает driver, то распределением Tasks, и отслеживанием стадий их выполнения ( Stages ) уже занимается Spark Scheduler.
    Так выглядит архитектура Spark при выполнении некоего задания.
    Есть ещё несколько способов обратиться к подсистеме executors с целью параллельного и одновременного выполнения задания, это
    df.edd.foreachPartitionAsync()
    но в этом случае Вам придется написать код, который уже будет выполняться настолько параллельно, насколько умело Вы владеете языком описания заданий для Spark, scala и где то java.
    Кроме параллельного выполнения заданий Spark поддерживает, через свой язык, scala, те же Threads и параллельные коллекции, которые так же способны поддерживать параллельное выполнение потоков. Но, по большей части, эти потоки будут выполняться на driver, то есть сами по себе они не будут выполняться распределено. А это уже сильно уменьшает возможности Spark использовать параллельное выполнение заданий, поскольку ресурсы одного отдельно взятого driver конечны, и при параллельном выполнении заданий driver довольно быстро их, эти ресурсы, исчерпает, если Вы попытаетесь считывать, допустим, файлы большого размера, или выполнять задания на данных большого размера.
    Я попытался найти в документации описание распределенного параллельного выполнения запросов, но как - то быстро у меня найти не получилось.
    Не поленитесь, и поищите Spark документацию. Там все эти детали досконально описаны.
    Ответ написан
    Комментировать
  • В каких случаях стоит предпочесть MS SQL Server другим БД?

    @Miron11
    Пишу sql 20 лет. Срок :)
    MySQL имеет значительно более слабая поддержка выполнения запросов
    Вплоть до 5.7 не имел процедур.
    Хотя структуры языка позволяющие создать процедуры у MySQL после этого появились, как такового языка программирования, выполнения логических операций, у MySQL не существовало. Возможно это изменилось. Но скорее нет.
    Таким образом называть MySQL полноценной СУБД нельзя.
    Если кого - то возможно не смущает создание кластеризованных индексов "по умолчанию", то для меня отсутствие подобных рычагов управления верстки цифровых записей неприемлемы.
    ----
    PosgreSQL база совершенно иного уровня, в плане академических требований, но вплоть до 9-й версии страдала от файл-объектной структуры записи, то есть каждая таблица или индекс это свой файл. Неизбежным результатом оказались провалы в аккуратности учета данных, когда от базы потребовались решения сверхзадач. Передача файловой системе ОС ответственности за аккуратность учета операций записи привели к потере самой базой доверия пользователя ( Uber ).
    Ситуация была выправлена в авральном порядке, и теперь у PostgreSQL все в полном порядке. Костяк команды разработчиков сумел быстро поправить ситуацию через несгибаемую волю и удивительный профессионализм ( как нам всем сейчас этого в России не хватает после того, как это было в избытке в советское время ).
    Поэтому с PostgreSQL на сегодня вопрос конечно не простой. Но и здесь, конечно, базе, которую поддерживают исключительными личными жертвами группа волевых и компетентных соратников, трудно тягаться с коллективом у которого есть цель, план развития, и видение изнутри всего многообразия цифровой индустрии.
    Ни у одной базы никогда не будет возможности похвастаться полноценной и постоянно улучшающейся поддержки очередей, встроенных каталогов интеграции данных, отдельная но хорошо отлаженная для совместной работы на сервере службы OLAP, и полноценного ядра обработки данных непосредственно в памяти резидента выполнимого ( Hecaton ). Плюс разнообразные форматы хранения данных, безупречная поддержка языков и кодирования символов, c SQL Server трудно состязаться. А возможность запросто вскрыть протокол общения и просмотреть запросы выполненные базой через profiler делают работу как разработчика, так и службы поддержки простой и легко поддающейся уму человека, у которого есть семья, дети, родители, и что - то в жизни, кроме работы.
    ----
    Я писал этот пост и уже тогда подумал, что MySQL и PostgreSQL не полный выбор из возможного списка конкурентов SQL Server на место СУБД. Меня, в свое время, заинтересовал Линтер. Раньше эта СУБД считалась русской, но в 2015-м - 17-м проскользнули данные о выкупе продукта зарубежными гражданами. Оставив темную историю с правами на продукт в стороне, по моим оценкам у базы есть все необходимые качества для обслуживания цифрового предприятия.
    Возможно там есть ограничения по количеству потоков, объему хранимых данных. Это наверное надо проверить с поставщиком.
    Поиск и оценку русских продуктов СУБД я веду непрерывно, и буду благодарен за любые подсказки и указатели.
    Ответ написан
    1 комментарий
  • Как обнулить IP адрес?

    @Akina
    Сетевой и системный админ, SQL-программист.
    По договору с провайдером у меня динамический IP. Услугу статического IP я не подключал. Однако мой IP не меняется уже месяц.
    [skipped]
    Что делать и каким способом обнулить время аренды DHCP IP-адреса? Как вернуть динамический IP?
    Для начала - не путайте тёплое с мягким. Да, с цветным тоже не путайте.

    Динамический IP означает, что Вам не нужно прописывать настройки, что все настройки Вы получите от оборудования провайдера по DHCP. Это всё.

    Повторяю - ЭТО ВСЁ! Больше ничего эта фраза в договоре не означает. Она не устанавливает, публичный адрес у Вас будет или приватный (белый или серый), не устанавливает, будет ли адрес всё время один и тот же, или будет периодически либо регулярно изменяться...

    Далее. Время аренды адреса - это параметр, которым оперирует DHCP-сервер провайдера. Он напрямую связан с МАС-адресом Вашего оборудования (сетевая карта, роутер), подключенного к провайдеру, и выделенным для этого МАС IP-адресом. Соответственно "обнулить время аренды" можно двумя способами:

    1) Выключить своё оборудования на время более текущего времени аренды. Ненадёжно - на DHCP соответствие будет сохраняться, пока этот IP не будет выдан кому-то ещё (что в случае проводных провайдеров событие маловероятное).

    2) Сменить МАС-адрес на своём оборудовании. Не будет работать, если у провайдера имеется привязка по порту (причём может быть как привязка клиентского МАС, так и выделяемого IP).

    Многие сайты считают меня ботом и не пускают. Иногда дело доходит до апсурда, и меня в гугле банят. Что искать в Google надо проходить проверку "я не робот", а это очень тяжело, особенно когда приходится две или три попытки делать.


    Эта проблема вообще слабо связана во всем остальным. Тут надо скорее разбираться, откуда такое счастье. Скорее всего, у тебя приватный адрес, а публичный адрес прова используется для выхода в Инет не только тебя, но и ещё кучи клиентов. Тогда все проблемы ожидаемы, а реакции других сайтов - скорее всего, обоснованы.

    Если отсутствие интерференции с другими клиентами действительно важно - следует приобрести у провайдера услугу выделенного реального IP-адреса. В данном случае:

    "выделенный" - присвоенный только тебе, одновременно с тобой с этого адреса никто работать не может.

    "реальный" - он же белый, адрес, маршрутизируемый в Инете.

    И да - этот адрес вполне может оставаться динамическим и изменяемым. В твоём случае это почти безразлично. Кроме случая очень злопамятных сайтов, которые помнят айпишники "ботоводов" неделями и месяцами. Тогда заказывай постоянный выделенный реальный IP (постоянный - не изменяющийся со временем).
    Ответ написан
    9 комментариев
  • Возможно ли автоматизировать ежедневный отчет?

    @rPman
    Майкрософт офис позволяет делать загрузку данных на страницу по запросу в sql базу данных, в экселе там для этого есть целый gui - data connection wizard.

    Скрипты sql у тебя есть, максимум сделать так чтобы переменные (дата для отчета например) брались из какой-нибудь таблицы в самой базе (так будет проще).

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

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

    Итого, задача построения отчетов будет сводиться к правке нужных параметров отчета в базе данных (консольные утилиты oracle для выполнения скриптов например либо из той же программы на excel, так как там в макросах можно делать полноценные формочки с кнопочками), каким то образом указанию имени файла для сохранения результирующего отчета и открытию файла-шаблона.

    p.s. автоматизация работы с excel макросами для неофитов выглядит как магия - открывается документ, в нем прямо на глазах начинают появляться данные сохраняться и открываться новые файлы (да эксель невероятно медленный, на столько что это видно человеку).
    Ответ написан
    Комментировать
  • Что выбрать для изучения Java, Kotlin или Python?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Пробовал сесть и заставить себя учить javascript и php, однако быстро забиваю.

    А почему вы думаете, что сев за java или kotlin не забьете? Для наглядности: порог входа в РНР ниже, чем в java.
    Да, JavaScript сложнее. Притом на нем куча фреймворков, которые нужно изучить. Плюс постоянно появляются новые фрейморки, которые нужно освоить и т.д. В Java фреймворки появляются не так часто.
    Но в каком-то смысле я понимаю Вас. Я сам занимался разработкой на WP и писал небольшие проекты на РНР около 3-х лет и скажу, что сам не мог заставить себя выучить РНР. Вот, субъективно не нравился он и все. А затем перешел на Java и скажу, что очень доволен. Принципиально разные уровни восприятия.

    Java - насколько я понимаю это в основном работа в больших фирмах для поддержки крупных махин. Как туда попасть джуну? Не ясно. Другой вариант это java для android, тут уже можно тыкаться и учить самостоятельно довольно успешно.

    Да, Java это энтерпрайз. А вот, сейчас на андроид сейчас пишут больше на kotlin. Перейти с Java на Kotlin не так сложно.

    Python - Django и Flask как разработка сайтов, в крайнем случае Data Science. С одной стороны смежная тематика с тем, что я делаю сейчас но на более серьёзном уровне, пару раз сталкивался с джанго в работе.

    Да, Python это в основном ERP, Data Science. Ну и Deep Learning.

    Смотрите, если вам ближе веб-разработка, то конечно же Python лучший выбор. Можно еще глянуть в сторону Ruby. На них пишут серьезные проекты. В основном e-commerce. Хотя РНР тоже не стоит скидывать со счетов, так как на нем тоже пишут e-commerce. Взять тот же Laravel, Symfony, Yii2.
    Если вам интересна android разработка, то однозначно kotlin. Ну а если энтерпрайз, то java.
    А вот, в JavaScript войти сложнее. В нем в основном либо фронт, либо фулстэк (mern, mean), либо мобильная разработка (react native и т.д.)
    Ответ написан
    Комментировать
  • Как подключится по SSH к серверу с динамическим IP?

    @rPman
    Есть разные формы отсутствия белого ip

    К примеру - динамический ip адрес, это когда ip адрес выдается но на какой то промежуток времени (часы-сутки-сессию) а затем меняется - в этом случае достаточно настроить dyndns провайдера (их огромное количество, от бесплатных до опций у платных dns/хостинг провайдеров), вы локально настраиваете какое то приложение (роутеры тоже умеют работать с некоторыми dyndns провайдерами) которое определяет ваш текущий ip адрес и отправляет провадеру, а тот настраивает вам доменное имя на текущий ip адрес тогда обычными настройками роутера открываете порты вашего локального сервера и подключаетесь по dyndns доменному имени.

    Если вы за NAT, т.е. даже ваш роутер получает для выхода в интернет адрес из локальной сети (видел такое у мобильных провайдеров) то да, это приговор. Тут варианты только vpn или к примеру reverse ssh port forwarding:
    На вашем ноутбуке настраивается автоматическое циклическое подключение ssh к удаленному серверу с белым ip, с настройкой перенаправлений порта вашего уже лкального ssh сервера на тот удаленный. В этом случае для подключения вам достаточно подключиться к удаленному серверу и подключение будет перенаправлено. Развитие вариантов - можно не делать порт удаленный доступным из интернета, и для подключения по ssh нужно будет подключаться сначала к ssh того сервера, так же с настроенным перенаправлением портов, и уже тогда подключиться к своему серверу.
    Ответ написан
    Комментировать