• На каком ЯП проще начать удаленную работу или фриланс?

    StrangeAttractor
    @StrangeAttractor
    Если нужно начать немедленно (т.е. собственно ответ на вопрос "на каком проще начать?") и иметь возможность легко и дёшево размещать проекты не заморачиваясь с VPS - то PHP. Если вопрос пропитания сею минуту остро не стоит, то лучше смотреть на будущее, будущее - это JavaScript, C#, Go, возможно Ruby/RoR и Python/Django. Если подумать то, по-моему король всех вариантов - JavaScript (полный стек - и клиент и сервер сайд), не то, чтобы он сильно мне нравился, но вот так.
    Ответ написан
    1 комментарий
  • Как Junior'у выбрать путь развития в сфере ИТ?

    StrangeAttractor
    @StrangeAttractor
    Учиться, мне кажется, лучше всего онлайн, найти качественные курсы за вменяемые деньги - огромная удача, на которую вряд ли стоит рассчитывать.

    Касательно что выбрать самый-самый главный критерий - чтобы тебе реально нравилось этим заниматься целыми днями, неделями и годами, зарплата вторична. Потому, что IT-работа это почти всегда в существенной мере творчество (пусть и интеллектуально-техническое), изобретательство, заниматься которым из-под палки невозможно. Можно заставить себя колоть дрова, отвечать клиентам которые приходят к тебе сами, даже лечить людей или решать задачи по математике, но заниматься решением творческих задач как "работой рабочим на работе" "потому что надо" потом как минимум очень нервирует если вообще возможно, так что нужно выбирать то, что тебе очень не скоро надоест и от чего ты не устанешь.
    Ответ написан
    2 комментария
  • Как исправить жуткий aliasing при просмотре видео в Google Chrome?

    StrangeAttractor
    @StrangeAttractor
    Как вариант можно попробовать поставить расширение "Disable Youtube™ HTML5 Player" чтобы вместо встроенных HTML5-механизмов браузера использовался традиционный Flash Player (на сколько я понимаю тоже встроенный в Chrome, так что обновлять его отдельно особого смысла нет). У меня HTML5-плеер в Chrome гарантировано крэшится через какое-то время (от нескольких секунд до нескольких минут) просмотра, так что я поставил это расширение чтобы сразу во Flash смотрелось.
    Ответ написан
    Комментировать
  • "Набор компонентов PHP для создания пользовательского интерфейса" Что это?

    StrangeAttractor
    @StrangeAttractor
    По-разному можно понимать. Можно как обёртку для GUI-тулкита типа PHP-GTK. Можно как специализированный PHP-фрэймворк, нацеленный на создание GUI-подобных web-приложений.
    Ответ написан
    Комментировать
  • Правильно ли использовать фронтенд фреймвор для админки?

    StrangeAttractor
    @StrangeAttractor
    Да.
    Ответ написан
    Комментировать
  • Где найти подряды установка видеонаблюдения, монтаж компьютерных сетей?

    StrangeAttractor
    @StrangeAttractor
    По-моему тут как всегда "связи решают всё". Делай всем знакомым и друзьям очень качественно и по возможности дёшево или даже бесплатно (я так делаю: со знакомых и их знакомых когда речь о домашнем/личном денег за работу не беру - зато беру как следует с фирм, которым они меня потом рекомендуют (или даже если это их собственная фирма, но речь уже о бизнесе)). Старайся делать как можно качественнее и показывать себя как можно более адекватным в работе с текущими заказчиками. Главный канал продаж услуг в мелком бизнесе, по-моему, личные рекомендации. Любому человеку, который сам этим не занимается (и даже если занимается, иной раз может не успевать отработать все заказы сам) приятно иметь человека, которого он может уверенно рекомендовать когда у его знакомых возникает такая потребность, порекомендвать и быть уверенным, что заказчик останется доволен и благодарен за рекомендацию. Знакомые в разных средних и крупных компаниях также будут рады подрядить тебя даже за очень скромный откат или и вовсе без оного если будут уверены, что ты сделаешь так, что им потом не придётся краснеть.
    Ответ написан
    Комментировать
  • Как написать простое приложение на Android?

    StrangeAttractor
    @StrangeAttractor
    Очень рекомендую использовать для этого IntelliJ Idea (достаточно бесплатной версии Community Edition). Пошаговый видео урок тут.
    Ответ написан
  • Как запустить социальную сеть с нагрузкой в 1-5к пользователей для чайников?

    StrangeAttractor
    @StrangeAttractor
    Я порекомендую BlueHost - пользовался сам и остался всем в высшей степени доволен. База в 5000 активных посетителей - это достаточно слабая нагрузка, позволяющая выбирать из широчайшего предложения классических и полуклассических PHP shared hosting-ов на любой вкус, как правило отличающихся очень низкими ценами при (чему способствует жёсткая конкруренция в настоящее время) достаточно хорошем сервисе.

    Брать VDS при таких условиях задачи (PHP, WordPress, небольшая нагрузка) смысла не вижу - лучше позвольте админам хостера позаботиться о Вас и взять львиную долю проблем (правильную настройку HTTP-серверного стека) на себя.

    UPDATE: Перепутал DigitalOcean с DreamHost. О DigitalOcean я нареканий не слышал, я имел ввиду DreamHost (да и на нём вроде всё давно исправили). В остальном ответ в силе.
    Ответ написан
    Комментировать
  • До какого уровня надо знать JS чтобы потом перейти дальше обучать PHP?

    StrangeAttractor
    @StrangeAttractor
    Если знаешь JavaScript, то PHP не нужен. Откройте для себя Node.JS и не морочьте себе голову.
    Ответ написан
    Комментировать
  • Какие видеокурсы по изучению английского языка посоветуете?

    StrangeAttractor
    @StrangeAttractor
    Я в своё время (ещё на чёрнобелом телеке это было) выучил по этим, говорю сейчас как на родном.

    255px-Muzzy.JPG
    Ответ написан
    1 комментарий
  • Почему на тостере не правильное время?

    StrangeAttractor
    @StrangeAttractor
    Есть только одно правильное время - UTC.
    Ответ написан
    Комментировать
  • Стоит ли выносить сервер авторизации за рамки приложения?

    StrangeAttractor
    @StrangeAttractor
    Сама идея имеет много плюсов...

    Вот именно, всё правильно описали. Чем модульнее, чем распределённее, и чем чище схема взаимодействия между модулями - тем лучше.

    Минус в производительности

    Зависит от архитектуры, может быть и плюс.

    Может быть не http а что-то более быстрое использовать?

    Попробуйте. Можно попробовать чистый TCP, почему бы и нет...
    Ответ написан
    Комментировать
  • Несколько раз в день появляется окно смерти, (фото внутри) в чем причина?

    StrangeAttractor
    @StrangeAttractor
    Это драйвер WiFi-контроллера Atheros (athrx.sys - обратите внимание, там в нижней части это указано) дуркует - в Windows 7 встроена не самая стабильная его версия. Надо установить свежий драйвер WiFi с сайта производителя. Вы такой не один, это известная проблема.
    Ответ написан
    Комментировать
  • С чего начать новичку в web: fornt-end vs back-end?

    StrangeAttractor
    @StrangeAttractor
    Без понимания front-end пытаться заниматься бэкэндом бессмысленно, мне кажется. Я слыхал про существование (причём в больших крутых фирмах) web-бэкэндщиков, не понимающих HTML, но я с трудом представляю себе как это так (может они бизнес-логику пишут, отдают всё через SOAP и даже не смотрят что на выходе, но всё-равно как-то сомнительно), думаю в реальной жизни это невозможно. Если тебе больше нравится бэкэнд, то можно забить на изучение кроссбраузерной вёрстки и фронтэнд-фрэймворков, но хорошо понимать нормальный HTML/CSS/JS-код и иметь представление что там к чему, мне кажется, ты обязан.
    Ответ написан
    1 комментарий
  • Средний заработок веб студий в небольшых городах?

    StrangeAttractor
    @StrangeAttractor
    Если местоположение web-студии ограничивает её доходность то в общем случае я бы усомнился в их профессионализме т.к. они как раз должны уметь продавать через Интернет . На крайняк, если слишком большая часть клиентуры фильтрует по наличию московского адреса то можно снать небольшой офис/угол/стол и посадить менеджера по работе с клиентами, а работу выполнять у себя в замкадьи...
    Ответ написан
    Комментировать
  • Обвиняют в неправомерном доступе к серверу, как быть?

    StrangeAttractor
    @StrangeAttractor
    Разузнай опыт фирмы Б в судебных делах. Если его нет - значит или берут на понт чтобы ты им на халяву всё сделал, или сами дураки, предложи им (а также и руководителю фирмы А) задать себе вопрос надо ли им это. Если такой опыт у них есть - то (если это не крутой крупный интегратор с крутыми клиентами, многолетней историей и огромным штатом) это судебные тролли - тогда тем более надо намекнуть фирме А с кем они связываются (их ждёт формальное отношение к работе, кривые недо решения и иски / угрозы исками "за неуплату" при отказе платить за хрень).
    Ответ написан
    7 комментариев
  • Нужно ли переносить русскоязычные страницы сайта в директорию site.net/RU?

    StrangeAttractor
    @StrangeAttractor
    Я бы перенёс для порядка если бы это был мой уютненький сайтик на который никто не ходит или внутренний корпоративный портал, но в продакшене лучше оставить как есть потому, что в Сети уже гуляют ссылки по старым адресам - вряд ли стоит их ломать.
    Ответ написан
  • Как на C# Получить список ip из диапазона ?

    StrangeAttractor
    @StrangeAttractor
    Попробуй так:

    private static List<IPAddress> IPAddressesRange(IPAddress firstIPAddress, IPAddress lastIPAddress)
    {
        var firstIPAddressAsBytesArray = firstIPAddress.GetAddressBytes();
    
        var lastIPAddressAsBytesArray = lastIPAddress.GetAddressBytes();
    
        Array.Reverse(firstIPAddressAsBytesArray);
    
        Array.Reverse(lastIPAddressAsBytesArray);
    
        var firstIPAddressAsInt = BitConverter.ToInt32(firstIPAddressAsBytesArray, 0);
    
        var lastIPAddressAsInt = BitConverter.ToInt32(lastIPAddressAsBytesArray, 0);
    
        var ipAddressesInTheRange = new List<IPAddress>();
    
        for (var i = firstIPAddressAsInt; i <= lastIPAddressAsInt; i++)
        {
            var bytes = BitConverter.GetBytes(i);
    
            var newIp = new IPAddress(new[] {bytes[3], bytes[2], bytes[1], bytes[0]});
    
            ipAddressesInTheRange.Add(newIp);
        }
    
        return ipAddressesInTheRange;
    }


    Преобразовать текстовую строку в IPAddress (чтобы подать на вход вышеприведённой функции) можно так:

    var ipAddres = System.Net.IPAddress.Parse(ipString);


    (подразумевается, что переменная ipString имеет тип string и содержит IP адрес в текстовой нотации).

    Пример использования (при нажатии на кнопку button1 считаем диапазон от 192.168.0.1 до 192.168.0.10 и выкладываем в заголовок формы второй адрес из полученного диапазона):

    private void button1_Click(object sender, EventArgs e)
    {
        var first = "192.168.0.1";
    
        var last = "192.168.0.10";
    
        var range = IPAddressesRange(IPAddress.Parse(first), IPAddress.Parse(last));
    
        Text = range[1].ToString();
    }


    Консольные проги на C# никогда не писал (как-то так исторически сложилось, под консоль писал на других языках) так что вопрос ввода данных предлагаю отладить Вам самому, а что делать далее когда Вы получили первый и последний IP в строковом формате надеюсь понятно их последнего примера (если нет - дайте знать).

    UPDATE: Т.к. вопрошающему, судя по комментам, не помогло, добавляю полный код рабочей WinForms-программы:

    using System;
    using System.Collections.Generic;
    using System.Net;
    using System.Windows.Forms;
    
    namespace IpRange
    {
        public partial class MainForm : Form
        {
            public MainForm()
            {
                InitializeComponent();
            }
    
            private void goButton_Click(object sender, EventArgs e)
            {
                IPAddress firstIpAddress;
    
                IPAddress lastIpAddress;
    
                if (String.IsNullOrWhiteSpace(firstIpAddressTextBox.Text))
                {
                    MessageBox.Show("Не задан начальный IP-адрес диапазона", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    
                    return;
                }
    
                if (String.IsNullOrWhiteSpace(lastIpAddressTextBox.Text))
                {
                    MessageBox.Show("Не задан начальный IP-адрес диапазона", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    
                    return;
                }
    
                try
                {
                    firstIpAddress = IPAddress.Parse(firstIpAddressTextBox.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Неправильно задан финальный IP-адрес диапазона", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    
                    return;
                }
    
                try
                {
                    lastIpAddress = IPAddress.Parse(lastIpAddressTextBox.Text);
                }
                catch (FormatException)
                {
                    MessageBox.Show("Неправильно задан финальный IP-адрес диапазона", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    
                    return;
                }
    
                var range = IPAddressesRange(firstIpAddress, lastIpAddress);
    
                wholeRangeListBox.Items.Clear();
    
                wholeRangeListBox.Items.AddRange(range.ToArray());
    
                // Или так (*вместо* предыдущей строчки - ту убрать, эту разкомментировать):
                // foreach (var ipAddress in range) wholeRangeListBox.Items.Add(ipAddress);
            }
    
            private static List<IPAddress> IPAddressesRange(IPAddress firstIPAddress, IPAddress lastIPAddress)
            {
                var firstIPAddressAsBytesArray = firstIPAddress.GetAddressBytes();
    
                var lastIPAddressAsBytesArray = lastIPAddress.GetAddressBytes();
    
                Array.Reverse(firstIPAddressAsBytesArray);
    
                Array.Reverse(lastIPAddressAsBytesArray);
    
                var firstIPAddressAsInt = BitConverter.ToInt32(firstIPAddressAsBytesArray, 0);
    
                var lastIPAddressAsInt = BitConverter.ToInt32(lastIPAddressAsBytesArray, 0);
    
                var ipAddressesInTheRange = new List<IPAddress>();
    
                for (var i = firstIPAddressAsInt; i <= lastIPAddressAsInt; i++)
                {
                    var bytes = BitConverter.GetBytes(i);
    
                    var newIp = new IPAddress(new[] {bytes[3], bytes[2], bytes[1], bytes[0]});
    
                    ipAddressesInTheRange.Add(newIp);
                }
    
                return ipAddressesInTheRange;
            }
        }
    }


    Обратите внимание, что програма "окультурена", что выражается не только в проверке входных значений на пустоту и обработке неожиданного ввода исключениями, но и использованием информативных имён для элементов: главную форму я по обыкновению переименовываю из Form1 в MainForm, кнопка переименована из button1 в goButton, текстовые поля для ввода - firstIpAddressTextBox и lastIpAddressTextBox, список для вывода - wholeRangeListBox - надеюсь это не доставит дополнительных трудностей с использованием этого кода.
    Ответ написан
    6 комментариев
  • C# and sql server для опытных программистов?

    StrangeAttractor
    @StrangeAttractor
    Troelsen. Чисто простой прикладной подход, показывает что где как к чему для тех, кто уже писал на чём-то подобном, но не знаком или слабо знаком с .Net.
    Ответ написан
    Комментировать
  • Какой выбрать инструмент для проектирования БД?

    StrangeAttractor
    @StrangeAttractor
    Мне нравятся MySQL WorkBench (жаль она теперь не умеет генерировать код для других СУБД, я даже думаю попробовать написать плагин, решающий эту проблему, а пока использую для других СУБД типа PostgreSQL DBDesignerFork - форк того, чем была MySQL WorkBench до того, как была поглощена проектом MySQL и лишилась поддержки других СУБД) и Entity Framework designer (тоже умеет генерировать код для создания БД, хотя этого и не всегда просто добиться когда речь идёт о СУБД отличной от MS SQL Server). Ещё есть, например, довольно навороченный и универсальный Sybase PowerDesigner (без поллитра не разберёшься) и классический старикан ERWin (не умеет (или не умел) некоторые "сложные" связи, например внешний ключ таблицы на саму себя). Как вариант ещё можно упомянуть Altova DatabaseSpy.
    Ответ написан
    2 комментария