• Как сконфигурировать iis, staticContent, mimeMap для разных путей контента?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Первое:
    Лучше изначально строить структуру проекта так, чтобы файловое хранилище было независимым и при высоких нагрузках не валило основной сайт, и чтобы в будущем было проще масштабировать проект.

    Проще говоря, как минимум следует использовать разные домены/сайты для хранилищ файлов.

    Например, основной сайт:
    example.org
    А хранилище файлов:
    storage1.example.org

    Даже размещая основной сайт и хранилище(а) на одном сервере, можно будет распределить нагрузку между проектами.

    Тогда и проблема с mime отпадет сама собой.

    Второе: Если файлы выдаются серверным кодом, то достаточно добавить заголовок Content-Disposition, чтобы браузер предложил пользователю скачать файл:
    Response.AddHeader("Content-Disposition", "attachment; filename=123.gif");
    Ответ написан
    Комментировать
  • Как правильно организовать регулярное выражение в C#?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Шаблон может быть такой:
    [A-Za-z]{1}[0-9]{1}

    Более строго, с начала строки и до конца:
    ^[A-Za-z]{1}[0-9]{1}$

    [A-Za-z] - буквы в заданном диапазоне, можно заменить на необходимый набор символов.
    [0-9] - числа от нуля до девяти, равносильно \d
    {1} - строго один символ.
    ^ - в данном случае - начало строки.
    $ - конец строки.

    Одна буква и много чисел:
    ^[A-Za-z]{1}\d+$
    + - один или более символов.
    Ответ написан
    2 комментария
  • Как вывести символы запрещенные в регулярном выражении?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Если я правильно понял вопрос, то можно заменить на пустоту символы, которые подходят под шаблон. А те что останется и будут "запрещенными символами".

    if (preg_match('/^[a-zA-Z\p{Cyrillic}\d\_\-]+$/u', $str) === 0) {
        echo "Некоторые символы не смогли пройти испытание: ".preg_replace('/^[a-zA-Z\p{Cyrillic}\d\_\-]+$/u', '', $str); 
       // по шаблону, не уверен, возможно потребуется убрать границы: ^ и $
    }
    Ответ написан
    2 комментария
  • Открытие блока по клику?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    $('div').click(function(){
        $(this).animate({height: $(this).height() == 20 ? 150 : 20 }, 'slow');
    });
    Ответ написан
  • Безопасно ли использовать связку http://login:password@site.name?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Провайдер видит все, логин и пароль.

    По протоколу HTTP все данные передаются как есть, в открытом виде.

    Другое дело, что ссылки подобного формата могут попасть не только в руки провайдера, но и других лиц. Трафик украсть чуток сложнее. Лучше использовать HTTPS. И рекомендуется избегать использования ссылок, в которых содержится пароль, просто для исключения ошибок со своей стороны (например, от банальной усталости или невнимательности). Простым пользователям это вообще нельзя показывать, для их же безопасности.
    Ответ написан
    Комментировать
  • Как запрашивать данные с сайта с определенной периодичностью?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Слишком общий вопрос.

    Программы-клиенты просто выполняют проверку с заданной частотой (по таймеру). Например, почтовая программа может каждые десять минут делать запросы к почтовому серверу и если есть новые письма, загружать их.

    На сайтах, при использовании AJAX это работает аналогично. Загруженная в браузер страница периодически делает запросы к серверу (в подавляющем большинстве).

    function Checker()
    {
      $.get("http://localhost/естьчо", // проверка наличия данных на сервере
      function(result)
      {
         alert("что-то есть");
         window.setTimeout(Checker, 5000); // вызов функции Checker через 5 сек.
      });
    }
    
    window.setTimeout(Checker, 5000); // вызов функции Checker через 5 сек.


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

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Для поиска по массиву - Array.IndexOf. Будет работать в LINQ наверняка не скажу, сам бы так поступать с данными из базы не стал. SQL - наше все :)
    string[] arr = {"слово 1", "слово 2"};
    return DbSet.Where(u => Array.IndexOf(arr, u.FirstName) != -1);


    Еще вариант, более плохой, но с возможность игнорировать регистр:
    string[] arr = {"слово 1", "слово 2"};
    return DbSet.Where(u => arr.Any(itm=> itm == u.FirstName));
    Ответ написан
    Комментировать
  • Как принято располагать файлы на сервере?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Можно и в корне оставить, если страниц всего 10 и больше не будет.

    Все от сайта зависит.

    Если структура сложная, то удобней будет сделать папку типа pages и в ней уже по подпапкам размещать, чтобы проще было ориентироваться.

    Вообще, правил на этот счет никаких нет, особенно для статичных (html) сайтов :)
    Ответ написан
    1 комментарий
  • Существует электронный справочник по.NET?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    В MSDN поиск не удобный, но с этой задачей неплохо справляется Google.

    Локальное средство просмотра Microsoft Help, по сути, будет тоже самое, с тем лишь отличием, что информация может храниться локально.

    Свежее данных, чем в MSDN, в любом случае не найти.
    Формат документации за последнее время стал заметно лучше и понятней. Вот раньше было совсем все плохо :)
    Ответ написан
    Комментировать
  • Как интегрировать id-пользователя с Яндекс.Метрикой?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Сегодня тоже пришла такая идея :)

    Пока плохо обдумал, но сейчас я бы отправил в Яндекс.Метрика хиты с идентификаторами пользователей.
    id = 123;
    username  = 'Вася';
    pageUrl = 'Заглянул на вот эту страницу.html';
    pageTitle = 'Такая вот страница';
    
    try 
    { 
      yaCounterNNNNN.hit('http://дорогойпользователь/' + id + '/' + pageUrl, username + ' посетил: ' + pageTitle, null); 
    } 
    catch (ex) { }

    Это позволит просматривать в Яндекс.Метрике адреса, которые посещают конкретные пользователи (например, в разделе Содержание -> Популярное) +в Вебвизоре тоже будет отражаться.

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

    Это просто наброски идеи, пока детально в этот вопрос не погружался.
    Хиты частенько использую для технических целей.
    Ответ написан
    Комментировать
  • Как сделать сеточную галерею на css?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Примерно так:
    ul{list-style-type:none;}
    li{display:inline;}
    li:nth-child(4):after { content:"\A"; white-space:pre; }

    \A - перевод строки.

    Либо можно ограничить ширину элементов.
    Ответ написан
    Комментировать
  • С чего начать изучение программирования?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Начинать нужно с того, к чему лежит душа :)

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

    Нужно ставить задачи и искать пути их решения.

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

    Проще всего, наверное будет начать с JavaScript, достаточно открыть блокнот и написать:
    <script>
    alert("Hello, world!");
    </script>

    сохранить файл с расширением .html, открыть в браузере и посмотреть на результат первого шага в программировании :)

    Для разработки приложений под Windows, да простят меня микрософтоненавистники, рекомендую: Visual Studio. По языкам программирования, Visual Basic .NET относительно простой, но своеобразен (имеет смысл его знать). C# чуть сложнее, с JavaScript у них синтаксис похож. Си++ более сложный. На радость микрософтоненавистникам могу еще упомянуть о Java (не путать с JavaScript).
    Ответ написан
    Комментировать
  • В чем польза изучения PHP сегодня?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    А как же Великая и ужасная (технология) ASP .NET? Почему нет в списке? ;-)

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

    Я бы рекомендовал сделать акцент на ООП.
    PHP может быть объектно-ориентированным, но может и не быть, если лень или недостаточно знаний.

    Если говорить об ASP .NET, то тут без ООП не обойтись. Хочешь не хочешь, придется работать с объектами/классами и прочими сопутствующими вещами.

    ASP .NET позволяет программировать на Visual Basic .NET и C#. Изучив один из этих языков можно будет создавать приложения для Windows и Windows Phone, всякие библиотеки и компоненты. В общем, много чего можно будет делать.

    Сложные и большие проекты делать в ASP .NET проще, чем на PHP (мне доводилось работать и с тем и другим). Раньше у PHP было преимущество в доступности и дешевизне. Сейчас такого преимущества нет. Технология .NET за поседение годы стала доступней. Сервера и хостинг под Windows по стоимости не уступает Linux. Основная среда разработки под .NET - Visual Studio потихоньку становится совсем бесплатной, былые ограничения постепенно уходят в историю, хотя даже с ограничениями многое можно реализовывать гораздо быстрее и проще.

    Проще - это не значит, что все будет совсем просто. Придется приложить определенные усилия и потратить уйму времени на изучение. Но оно того стоит.
    Ответ написан
  • Как привести объект к типу выше в древе наследования?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Придется делать конструктор в FileMember, который будет принимать Grid и строить себя на его основе. В этом случае связь с исходным объектом потеряется (если критично).

    Как вариант, можно убрать наследование и сделать в FileMember свойство, принимающее Grid. Будет проще передавать Grid в FileMember :) Но придется изрядно доработать FileMember, чтобы он вел себя как Grid. По сути тупая переадресация будет (но подводные камни исключать нельзя, все может оказаться сложнее).

    В итоге нужно выбрать, что будет проще: копировать исходный Grid в FileMember; или определить все свойства, методы Grid и т.п. в FileMember; или отказаться от идеи передавать Grid, использовать только FileMember, изменить исходную задачу на вариант с более простым решением.
    Ответ написан
    3 комментария