• Какие ЯП будут более востребованными через 10-15 лет?

    gadfi
    @gadfi
    https://gamega.org
    через 10-15 лет в тренде будет ии, программирование будет сводится к "Эй! Тупая железека сделай сайт типа вк тока круче!"
    Ну а серьезно, учите не языки, учите технологии.
    • с/с++ не является моим любимым яп, доля рынка значительно уменьшилась, но может пережить и нас
    • Assembler теже яйца что и с/с++ вакансий для него поменьше но жить будут очень долго
    • Delphi уже мертв, попытки реанимировать попыхивают некрофилией, при том как и любое извращение дорогой ....
    • java ─ смерть ей пророчат очень давно, но пока число вакансий только растет
    • C# тут и говорить нечего, пока жив windows жив и C# вполне способен пережить и windows, очень похож с java ─ концепции друг у друга они заимствуют с поразительной стабильностью
    Ответ написан
    6 комментариев
  • Какие ЯП будут более востребованными через 10-15 лет?

    @tushev
    15 лет назад сам был в университете и задавался тем же вопросом.
    С тех пор популярность C/C++ существенно уменьшилась так как его во многих областях подвинули специализированные и скриптовые языки. То есть нужен ли вам этот язык зависит от того, в какой области собираетесь работать.
    Delphi тогда была еще популярна, но с тех пор ее популярность постоянно падает, лет через 15 думаю вообще станет экзотикой. Ее подвинули всякие .NET С#.
    Java набирала популярность еще и тогда. Хотя области ее применения за 15 изменились, но позиции она вроде как не сдает.
    Assembler последнее время интересует только тех кто глубоко копается в железе, пишет компиляторы или ядра ОС. Ну и он хорош для понимания устройства компьютеров на низком уровне. Раньше на нем обычно программировали всякие контроллеры, но теперь для этого используют С или даже скиптовые языки.

    Очень трудно давать советы, не зная в какой области вы собираетесь работать. Но уделить больше внимания Java я бы советовал. Плюс дополнительно поинтересуйтесь скриптовыми языками (например PHP, Python, JavaScript). Если собираетесь связать жизнь с Windows, то займитесь еще C#. По любому для общего развития не забывайте С/С++, но без фанатизма, если не планируете работать именно на нем.
    Ответ написан
    1 комментарий
  • Как настроить, чтобы Doctrine2 в базе нормально сохранял кириллицу?

    @mcflys Автор вопроса
    Grazhdanin planety :)
    Нашел решение. Может кому-нибудь понадобится:

    Открываем файл конфигурации доктрины: /config/autoload/doctrine.local.php

    Добавляем в массив doctrine/connection/orm_default/params вот эти ячейки:

    'charset' => 'utf8',
    'driverOptions' => array(
    1002 => 'SET NAMES utf8'
    ),

    Придется все значения пересохранить, так как эти кракозябры начнет показывать на сайте.
    Желательно такую настройку проверсти на стадии разработки приложения.
    Ответ написан
    Комментировать
  • Индексируются ли .onion сайты?

    @Good_Mode
    Torsearch.es и некоторые другие системы индексируют сайты из сети Tor.
    Статья по теме: www.qwrt.ru/news/2671
    Ответ написан
    Комментировать
  • Wi-fi для клиентов, но не для сотрудников, как?

    Coolmax
    @Coolmax
    Кроме административного воздействия, могу предложить:
    1. Поотключать WiFi на устройствах сотрудников
    2. Блокировать по макам на роутере.

    А вообще маловато исходных данных...
    Ответ написан
  • Как отдавать контент сайта по p2p?

    Jump
    @Jump
    Системный администратор со стажем.
    Много "болтовни" в сети, а реальных примеров(скриптов) не смог найти.

    А это не оно?
    Ответ написан
    Комментировать
  • Два разных контролера для одного сайта на fat-free framework, как правильно сделать?

    @2vtlk
    Не люблю писать в текстовых (ini) конфигах. Люблю писать всё php-кодом
    В index.php добавляем роут:
    $f3->route('GET /@controller/@action','\controllers\@controller->@action');


    Для того что бы сделать другой layout можно пойти несколькими способами:
    1. Унаследовать контроллеры админки и клиентской части от разных базовых контроллеров
    2. Костыль. Можно переопределить метод afterroute в каждом контроллере(где и вызывать другой layout).
    Ответ написан
    Комментировать
  • Как задать Placeholder для TextBox в среде VisualStudio 2013 язык C#?

    lam0x86
    @lam0x86
    Если WinForms, то, начиная с WinXP в ОС встроена поддержка данной фичи, и называется это Cue Banners. Здесь написано, как это можно прикрутить: stackoverflow.com/a/4902969

    Если WPF, то можно посмотреть здесь: stackoverflow.com/a/833967
    Ответ написан
    Комментировать
  • Проект на C# WinForm не завершается полностью после перехода между формами, как решить?

    @dmmu
    Думаю, Вам больше подойдет что-то такое:

    namespace coinBOT
    {
        public partial class BotForm : Form
        {
            private SettingsForm _settingsForm;
    
            public BotForm()
            {
                InitializeComponent();
    
                this._settingsForm = new SettingsForm() { Owner = this };
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (this._settingsForm.ShowDialog() == DialogResult.OK)
                {
                      // обработка результатов
                }
            }
        }
    }


    Из второй формы убирайте обработчик FormClosing, он там не нужен. Форма настроек будет убиваться автоматически при закрытии приложения.
    Ответ написан
    3 комментария
  • Как задать Placeholder для TextBox в среде VisualStudio 2013 язык C#?

    aush
    @aush
    Т.к. фреймворк не указан, надо полагать, что по дефолту у нас WinForms. Тогда в простейшем виде это выглядит так:

    class TextBoxWithPlaceholder : TextBox
    {
        public string Placeholder { get; set; }
    
        protected override void OnCreateControl()
        {
            base.OnCreateControl();
    
            if (!DesignMode)
            {
                Text = Placeholder;
            }
        }
    
        protected override void OnLostFocus(EventArgs e)
        {
            base.OnLostFocus(e);
    
            if (Text.Equals(string.Empty))
            {
                Text = Placeholder;
            }
        }
    
        protected override void OnGotFocus(EventArgs e)
        {
            base.OnGotFocus(e);
    
            if (Text.Equals(Placeholder))
            {
                Text = string.Empty;
            }
        }
    }
    Ответ написан
    1 комментарий
  • Как изменить стартовую директорию в cygwin?

    Nidora
    @Nidora
    Бонус 200 руб всем новым клиентам! VDS - 149 руб
    Может вам поможет данная статья про то как установить директорию.
    Ответ написан
    Комментировать
  • Как в fat-free framework зашифровать пароль в md5 и отправить методом post?

    GeraJet
    @GeraJet
    Anykey
    Может я чего-то не понимаю, но почему нельзя использовать md5($password) перед занесением в базу?
    php.net/manual/ru/function.md5.php
    Ответ написан
    4 комментария
  • Где найти нормальные видео уроки по C# и .NET на русском языке ?

    @xaknet
    Как вариант www.microsoftvirtualacademy.com/training-courses/c...

    А чтобы реально начать решать задачи, начните делать небольшой проект, и разбейте проект на модули, небольшие части, и после юзайте поисковик на поиск той или иной проблемы, желательно на англ. как говорится без него мало чего найдешь и накопаешь. Я сам учусь также, читал книги и доходил только до 200 страници и забивал, так как писать код который редко применяешь в реальных проектах не вижу смысла только если вы хотите поднять логику, лучше браться сразу за проект, и начать тыкать и понимать саму логику работы кода, а после уже и смотреть код и понимать синтаксис. Старайтесь больше изучать ASP.NET + js , а если есть свободное время то и Python можно.
    Ответ написан
    4 комментария
  • Как защитить свой HTML шаблон от кражи?

    Serhioromano
    @Serhioromano
    Web Developer
    Пделюсь с тем что мы делали.

    При скачивании шаблона, zip файл распаковывался, и в один CSS файл вшивался айди пользователя. Например там было что то вроде.

    .my-calss {
        color: #fd[ID]
    }


    Потом [ID] подменялось на ID пользователя но при этом обязательно 4 цифры. в конце что то вроде.

    .my-calss {
        color: #fd0012
    }


    Это пользователь 12.

    Потом все запоковывается и пользователь скачивает.

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

    Это конечно немного работы, но без этого ни как не получалось по другому.
    Ответ написан
    3 комментария
  • Где найти нормальные видео уроки по C# и .NET на русском языке ?

    Как вариант курс на MVA.
    Ответ написан
    Комментировать
  • Два домена, два хостинга и один сайт - как быть?

    Gasoid
    @Gasoid
    лучше один домен, один сайт и два хостинга, тогда для поисковиков это будет норма,
    достаточно привязать к одному домену 2 ip (2 хостинга) и нагрузка будет распределяться между хостингами, но какой в этом смысл если на сайт заходят 20 человек в сутки.

    2 домена и 2 хостинга с одним сайтом, конечно как написал выше человек это плохо, задвоенный контент плохо индексируется, или один из доменов из поиска уйдет. лучше указать главное зеркало, чтобы не было путаницы
    Ответ написан
    3 комментария
  • Почему некорректно работает программа на Delphi ?

    AnnTHony
    @AnnTHony
    Интроверт
    Предложу свой вариант через массив:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      rect: array[0..2] of real;
      tmp, p, s: real;
      i: integer;
    begin
      rect[0] := StrToFloat(Edit1.Text);
      rect[1] := StrToFloat(Edit2.Text);
      rect[2] := StrToFloat(Edit3.Text);
    
      if (rect[0] = rect[1]) and (rect[1] = rect[2]) then
        begin
          label1.Caption := 'Равносторонний';
          Exit;
        end;
      if (rect[0] = rect[1]) or (rect[1] = rect[2]) or (rect[0] = rect[2]) then
        begin
          label1.Caption := 'Равнобедренный';
          Exit;
        end;
    
      //сортируем массив
      for i := 0 to 1 do
        begin
          tmp := rect[i + 1];
          if (rect[i] > rect[i + 1]) then
            begin
              rect[i + 1] := rect[i];
              rect[i] := tmp;
            end;
        end;
      if (rect[0] > rect[1]) then
            begin
              tmp := rect[1];
              rect[1] := rect[0];
              rect[0] := tmp;
            end;
    
      if (sqrt(rect[0] * rect[0] + rect[1] * rect[1]) = rect[2]) then
        begin
          label1.Caption := 'Прямоугольный';
          Exit;
        end;
    
      if (rect[0] * rect[0] + rect[1] * rect[1] > rect[2] * rect[2]) then
        begin
          label1.Caption := 'Тупоугольный';
          p := (rect[0] + rect[1] + rect[2]) / 2;
          s := sqrt(p * (p - rect[0]) * (p - rect[1]) * (p - rect[2]));
          label1.Caption := 'Площадь: ' + FloatToStr(s) + #13;
          for i := 0 to 2 do
            label1.Caption := label1.Caption + FloatToStr(rect[i]) + #13;
          Exit;
        end;
    end;
    Ответ написан
    1 комментарий
  • Почему некорректно работает программа на Delphi ?

    @zedxxx
    procedure Sort(var a,b,c: Integer);
    var
      a1,b1,c1: Integer;
    begin
      a1:=a; b1:=b; c1:=c;
      if (a<=b) and (a<=c) and (b<=c) then begin a:=a1;b:=b1;c:=c1; end else
      if (a<=b) and (a<=c) and (c<=b) then begin a:=a1;b:=c1;c:=b1; end else
      if (b<=a) and (b<=c) and (a<=c) then begin a:=b1;b:=a1;c:=c1; end else
      if (b<=a) and (b<=c) and (c<=a) then begin a:=b1;b:=c1;c:=a1; end else
      if (c<=a) and (c<=b) and (a<=b) then begin a:=c1;b:=a1;c:=b1; end else
      if (c<=a) and (c<=b) and (b<=a) then begin a:=c1;b:=b1;c:=a1; end;
    end;
    Ответ написан
    1 комментарий
  • Как программно сменить рингтон на Android 4.0+?

    Bringoff
    @Bringoff Автор вопроса
    Android dev at Freelance
    В общем, приблизительно так:
    private void changeRingtone(boolean isRingtone, boolean isNotification) {
             File ringtoneFile = new File(dir, newRing);
    
            ContentValues values = new ContentValues();
            values.put(MediaStore.MediaColumns.DATA, ringtoneFile.getAbsolutePath());
            values.put(MediaStore.MediaColumns.TITLE, ringtoneFile.getName());
            values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
            values.put(MediaStore.Audio.Media.ARTIST, " ");
            values.put(MediaStore.MediaColumns.SIZE, ringtoneFile.getUsableSpace());
            values.put(MediaStore.Audio.Media.IS_RINGTONE, isRingtone);
            values.put(MediaStore.Audio.Media.IS_NOTIFICATION, isNotification);
            values.put(MediaStore.Audio.Media.IS_ALARM, false);
            values.put(MediaStore.Audio.Media.IS_MUSIC, false);
    
            Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringtoneFile
                    .getAbsolutePath());
            mContext.getContentResolver().delete(
                    uri,
                    MediaStore.MediaColumns.DATA + "=\""
                            + ringtoneFile.getAbsolutePath() + "\"", null);
            Uri newUri = mContext.getContentResolver().insert(uri, values);
            try {
                if (isRingtone) {
                    RingtoneManager.setActualDefaultRingtoneUri(mContext, RingtoneManager.TYPE_RINGTONE, newUri);
                }
                if (isNotification) {
                    RingtoneManager.setActualDefaultRingtoneUri(mContext, RingtoneManager.TYPE_NOTIFICATION, newUri);
                }
            } catch (Throwable t) {
                System.err.println("Can't set ringtone");
                t.printStackTrace();
            }
        }
    Ответ написан
    Комментировать