Popular Tags:

Создание приватного прокси

16.10.2017 at 13:58

Часто прокси нужен на 10-15 минут или нужно передать через прокси конфеденциальные данные. В таких ситуациях желательно иметь свой личный прокси. Покупать так называемые «приватные» прокси я не рекомендую потому что это кот в мешке и вы никогда не узнаете скольким людям продали тот же прокси. Я в таких случаях быстро создаю прокси на VPS а после использования удаляю. read more

Использование proxy в selenium

14.10.2017 at 10:15

Я уже писал о парсинге сайтов с помощью библиотеки selenium. Иногда бывает нужно использовать прокси при парсинге. Сделать это не трудно:

var proxy = new Proxy();
proxy.HttpProxy = "<ip>:<port>";
var options = new ChromeOptions();
options.Proxy = proxy;
IWebDriver driver = new ChromeDriver(options);

для socks прокси с логином и паролем настройка будет выглядеть так:

var proxy = new Proxy();
proxy.SocksProxy = "<ip>:<port>";
proxy.SocksUserName = "<login>";
proxy.SocksPassword = "<password>";
var options = new ChromeOptions();
options.Proxy = proxy;
IWebDriver driver = new ChromeDriver(options);

Самое главное: никогда не передавайте через прокси важные данные, если это не ваш прокси! read more

Использование прокси на C#

13.10.2017 at 13:51

Часто при парсинге данных можно столкнуться с защитой от парсинга. Чаще всего сервер банит IP адрес с которого идет слишком много запросов. Для обхода такой защиты нужно использовать proxy.

Ранее я уже писал о парсинге сайтов с помощью создания WebRequest. Добавить к нему прокси очень просто:

static void AddProxy(HttpWebRequest request) {
    var proxy = new WebProxy(proxyip, proxyport);            
    request.Proxy = proxy;
}

Некоторые прокси могут требовать авторизации по логину и паролю. read more

Переопределение урла сервера из конфига в asp.net core 2.0

05.10.2017 at 21:32

Для того, чтобы переопределить урл в коде, нужно в метод BuildWebHost добавить строку

.UseUrls("http://localhost:60000", "http://localhost:60001")

UseUrls это метод расширения, который выглядит так:

public static IWebHostBuilder UseUrls(this IWebHostBuilder hostBuilder, params string[] urls)
{
    if (urls == null)
    {
        throw new ArgumentNullException(nameof(urls));
    }

    return hostBuilder.UseSetting(WebHostDefaults.ServerUrlsKey, 
        string.Join(ServerUrlsSeparator, urls));
}

т.е. на самом деле он устанавливает настройку с названием WebHostDefaults.ServerUrlsKey, записывая туда урлы, разделенные ServerUrlsSeparator. read more

Легковесная встраиваемая база данных LiteDB

04.10.2017 at 20:57


Я часто пишу небольшие домашние проекты и постоянно приходится решать проблему хранения данных. Полноценный сервер БД это слишком сложно для такого проекта, а сериализация в файлы требует слишком много сил. На помощь приходят различные встраиваемые БД. Сегодня посмотрим на одну из них — LiteDB.

Авторы рекомендуют базу для небольших десктоп приложений и веб сервисов. read more

Генерация тестовых данных на C#

02.10.2017 at 22:20

Для генерации данных я использую библиотеку Bogus. Начнем с примеров:

using Bogus;
using Bogus.DataSets;
...
var faker = new Faker();
Console.WriteLine(faker.Company.CompanyName()); //Keebler LLC
Console.WriteLine(faker.Name.FullName(Name.Gender.Male)); //Werner Rath
Console.WriteLine(faker.Image.Animals()); //http://lorempixel.com/640/480
Console.WriteLine(faker.Internet.Avatar()); //https://s3.amazonaws.com/uifaces/faces/twitter/rehatkathuria/128.jpg

Методы генерации сгруппированы по датасетам. Bogus умеет генерировать следующие данные:
Address — почтовый индекс, улица, страна, штат, широта и долгота и т.д. read more

Парсинг сайтов на C#

11.09.2017 at 11:55

Использование Selenium на C#

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

Подключение Selenium к проекту

В контекстном меню проекта выбираем пункт «Manage NuGet Packages…»

Далее на вкладке «Browse» находим и устанавливаем пакеты Selenium.WebDriver и Selenium.WebDriver.ChromeDriver. read more

Как писать на C# на linux

23.08.2017 at 22:02


Я почти год не писал на C#, переквалифицировался в Dart разработчика и пересел на ubuntu как нормальный фронтендер. За это время в мире дот нета произошло много всего интересного, что прошло мимо меня. Например вышел .Net Core 2.0, что позволило писать приложения на линуксе. С первой версией конечно тоже можно было, но я стараюсь не использовать ничего от Microsoft первой версии. read more

Шпаргалка по Git

22.08.2017 at 21:30


Решил написать свою шпаргалку, чтобы постоянно не гуглить одни и те же вопросы.

Клонирование репозитория

git clone ssh://user@domain.com/repo.git

Добавить файл к следующему коммиту

git add <filename>

Закоммитить

git commit -m "Commit message"

Подтянуть все изменения с сервера

git pull

Удаление всех незапушенных коммитов

git reset --hard HEAD~1

Изменить комментарий к последнему коммиту

git commit --amend

Список всех локальных веток

git branch

Переключиться на ветку

git checkout <branchname>

Обновление информации с сервера

git fetch

Замержить другую ветку в текущую

git merge <otherbranchname> 

Откатить запушенный коммит (создаст локальный коммит с откатом)

git revert <commit_hash>

Для того, чтобы некоторые файлы не попадали под управление системы контроля версий, нужно их прописать в файле .gitignore read more

Разработка простой игры на phaser.io. Продолжение.

02.08.2017 at 19:15

StateManager в phaser.io

Во всех игровых движках есть какой-либо способ управления различными состояниями игры. В phaser за это отвечает StateManager. Доступ к нему осуществляется с помощью свойства game.state.
Добавляется новое состояние с помощью метода

game.state.add('gameOver', gameOverState);

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

var gameState = {
    create: function () {
    },
    update: function () {
    },
    preload: function () {
    },
    init: function (param) {
    }
}

Есть и другие функции, полный список можно посмотреть в API. read more