// .* - может съесть лишнего,
// если есть возможность, лучше строго ограничивать
// в данном случае четкой границей
// может служить открытие следующего тега (<)
// "(.+?)<div" имеет смысл использовать, если в искомом тексте могут быть другие теги
// class="margin-top-xx-small" тоже можно использовать,
// но только если это действительно необходимо
var pattern = @"<div(\s+)class=""currency-table__rate__text"">(?<data>[^\<]+)<";
var reg = new Regex(pattern, RegexOptions.IgnoreCase);
var m = reg.Match(value); // вместо value переменная с данными для разбора
var result = m.Groups["data"].Value.Trim();
Console.WriteLine(result);
Server=localhost;Database=example;UID=username;Password=password
var connectionString = "Server=localhost;Database=example;UID=username;Password=password";
using (var connection = new MySqlConnection(connectionString))
{
// открываем соединение
connection.Open();
// создаем команду
var cmd = new MySqlCommand();
cmd.Connection = connection;
cmd.CommandText = "SELECT * FROM table1";
// создаем адаптер
var adapter = new MySqlDataAdapter(cmd);
// создаем таблицу
var table = new DataTable();
// получаем данные в таблицу
adapter.Fill(table);
// выводим
foreach (DataRow row in table.Rows)
{
Console.WriteLine(row[0]);
}
}
<configuration>
<startup>
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
</configuration>
также хотелось бы узнать как компилировать в месте с ним.
private Button FirstButton = null;
void S_MouseClick(object sender, MouseEventArgs e)
{
var button = (sender as Button);
if (this.FirstButton == null)
{
// это первая кнопка в текущей сессии,
// запоминаем ссылку на кнопку
this.FirstButton = button;
}
else
{
// это вторая кнопка в текущей сессии
// сравниваем текст с первой
if (this.FirstButton.Text == button.Text)
{
Console.WriteLine("Текст совпадает!");
// меняем свойства кнопок
this.FirstButton.Text = button.Text = "--";
this.FirstButton.Enabled = button.Enabled = false;
}
else
{
Console.WriteLine("Текст не совпадает.");
}
// сбрасываем выбор, запуская тем самым новую сессию
this.FirstButton = null;
}
}
HttpContext.Current.Response.RedirectToRoute
(
new
{
controller = "Home",
action = "Index"
}
);
var routeData = ((System.Web.Mvc.MvcHandler)HttpContext.Current.Handler).RequestContext.RouteData;
var urlHelper = new System.Web.Mvc.UrlHelper(HttpContext.Current.Request.RequestContext);
var url = urlHelper.Action("Index", "Home");
// счетчик секунд
int secondsCounter = 0;
var s500A2 = new System.Timers.Timer();
// интервал - одна секунда
s500A2.Interval = 1000;
// обработчик истечения интервала
s500A2.Elapsed += (sender, e) => { // имена sender и e можно поменять, если будут проблемы
Console.WriteLine("Прошла секунда");
// увеличиваем значение счетчика
secondsCounter++;
if (secondsCounter >= 10)
{
Console.WriteLine("Всего прошло 10 секунд");
secondsCounter = 0;
}
};
s500A2.Start();
// интервал - одна секунда
s500A2.Interval = 1000;
s500A2.Elapsed += (sender, e) => {
Console.WriteLine("Прошла секунда: {0:HH:mm:ss.fff}", DateTime.Now);
};
// На выходе будет примерно это:
// Прошла секунда: 14:18:20.950
// Прошла секунда: 14:18:21.964
// Прошла секунда: 14:18:22.978
// Прошла секунда: 14:18:23.992
// Прошла секунда: 14:18:25.006 // потеряли 14:18:24
// Прошла секунда: 14:18:26.020
// Прошла секунда: 14:18:27.034
int lastSecond = 0;
// интервал - десять миллисекунд
s500A2.Interval = 10;
s500A2.Elapsed += (sender, e) => {
int currentSecond = DateTime.Now.Second;
if (currentSecond != lastSecond)
{
Console.WriteLine("Прошла секунда: {0:HH:mm:ss.fff}", DateTime.Now);
lastSecond = currentSecond;
}
};
var result = new Dictionary<int, List<object>>();
foreach (var item in arrComputer)
{
var c = (Comp)item;
// проверяем, есть такой год в коллекции или нет
if (!result.ContainsKey(c.year))
{
// такого года еще нет, добавляем
result.Add(c.year, new List<object> { c });
}
else
{
// год есть, добавляем запись в него
result[c.year].Add(c);
}
}
// в result будет коллекция: год-компьютеры
foreach (int year in result.Keys)
{
Console.WriteLine
(
"В {0} году на Земле вылупилось компьютеров: {1}",
year,
result[year].Count
);
if (result[year].Count > 1)
{
Console.WriteLine("Да это просто демографический взрыв какой-то!");
foreach (var item in result[year])
{
Console.WriteLine("+ {0}", ((Comp)item).marka);
}
}
}
# клонируем рекурсивно, т.к. там ссылка на другой репозиторий
git clone --recursive https://github.com/yar229/WebDavMailRuCloud.git
# тянем последнюю версию nuget, если таковой еще нет
wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -O nuget.exe --no-check-certificate
# восстанавливаем пакеты nuget
mono nuget.exe restore WebDavMailRuCloud/WebDAVMailRuCloud.sln
# пробуем выполнить сборку решения
MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln
MailRuCloudApi.cs(1020,51): error CS0019: Operator `>' cannot be applied to operands of type `long' and `object'
return (fileStream.Length > 0) as object;
MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln
18 Warning(s)
0 Error(s)
mono WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe --help
log4net:ERROR Could not create Appender [ColoredConsoleAppender] of type [log4net.Appender.ColoredConsoleAppender]. Reported error follows.
System.EntryPointNotFoundException: GetConsoleOutputCP
...
nano WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe.config
<log4net threshold="OFF" />
mono WebDavMailRuCloud/WDMRC.Console/bin/Debug/wdmrc.exe --help
WebDAVCloudMailRu 1.0.0.0
yar229@yandex.ru
-p, --port Required. WebDAV server port
-l, --login Required. Login to Mail.ru Cloud
-s, --password Required. Password to Mail.ru Cloud
--maxthreads (Default: 5) Maximum concurrent connections to cloud.mail.ru
--user-agent "browser" user-agent
--help Display this help screen.
--version Display version information.
Unhandled Exception:
System.InvalidOperationException: Property 'enabled' not found in configuration element
at System.Configuration.ConfigurationElement.get_Item (System.String property_name) <0xb50f5608 + 0x000a7> in :0
at System.Configuration.ConfigurationElement.get_Item (System.Configuration.ConfigurationProperty property) <0xb50f55d8 + 0x0001f> in :0
at System.Net.Configuration.DefaultProxySection.get_Enabled () <0xb506a270 + 0x0001b> in :0
at MailRuCloudApi.Account.Login () <0xb50699f8 + 0x000af> in :0
<system.net>
<defaultProxy enabled="false" useDefaultCredentials="false">
<proxy/>
<bypasslist/>
<module/>
</defaultProxy>
</system.net>
nano WebDavMailRuCloud/MailRuNetCloudClient/MailRuCloudApi/Account.cs
MONO_IOMAP=case xbuild WebDavMailRuCloud/WebDAVMailRuCloud.sln
WebDAV server running. Press 'x' to quit.
<system.webServer>
<rewrite>
<rules>
<rule name="All" patternSyntax="Wildcard" stopProcessing="true" enabled="true">
<match url="*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}"
matchType="IsFile"
negate="true"
pattern=""
ignoreCase="false"
/>
</conditions>
<action type="Rewrite" url="index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
response.AddHeader("Content-Disposition", "attachment; filename='" + file.Name + "';");
// или
// response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.Name + "\";");
$good[$spec] = array('mall', 'discount', 'promotion');
// ^
foreach($good[$spec] as $mall) {
// ^
// ...
}
php.net/manual/ru/language.types.array.php
Почему $foo[bar] неверно?
Всегда заключайте в кавычки строковый литерал в индексе ассоциативного массива. К примеру, пишите $foo['bar'], а не $foo[bar]. Но почему? Часто в старых скриптах можно встретить следующий синтаксис:<?php $foo[bar] = 'враг'; echo $foo[bar]; // и т.д. ?>
Это неверно, хотя и работает. Причина в том, что этот код содержит неопределенную константу (bar), а не строку ('bar' - обратите внимание на кавычки). Это работает, потому что PHP автоматически преобразует "голую строку" (не заключенную в кавычки строку, которая не соответствует ни одному из известных символов языка) в строку со значением этой "голой строки". Например, если константа с именем bar не определена, то PHP заменит bar на строку 'bar' и использует ее.
class TableManagement extends React.Component {
constructor(props) {
super(props);
this.state = {
head_names: ['qwe0', 'qwe1'],
rows: [
[1, 2],
[3, 4]
]
};
}
AddRow() {
let newRows = this.state.rows;
newRows.push([0, 0]);
this.setState({rows: newRows});
}
render() {
return (
<div>
<Table head={this.state.head_names} rows={this.state.rows} />
<hr />
<button onClick={ this.AddRow.bind(this) }>Add row</button>
</div>
);
}
}
class Table extends React.Component {
render() {
return (
<table>
<thead>
{this.genHead()}
</thead>
<tbody>
{this.genRow()}
</tbody>
</table>
);
}
genHead() {
var head = this.props.head;
return head.map(function(v, i) {
return (
<th key={'th' + i}>
{v}
</th>
);
});
}
genRow() {
var rows = this.props.rows;
return rows.map(function(v, i) {
var tmp = v.map(function(v2, j) {
return (
<td key={'td' + i + '_' + j}>
{v2}
</td>
);
});
return (
<tr key={'tr' + i}>
{tmp}
</tr>
)
});
}
}
ReactDOM.render(
<TableManagement />,
document.getElementById('root')
);
string applicationId = "идентификатор вашего приложения";
string scope = "status,email";
string authorizeUrl = "https://oauth.vk.com/authorize";
authorizeUrl += String.Format("?client_id={0}&response_type=code", applicationId);
// authorizeUrl += String.Format("&state={0}", "все что вам нужно");
authorizeUrl += String.Format("&scope={0}", scope);
protected internal void DefaultCallback(object sender, WebBrowserCallbackEventArgs e)
{
// ожидаем, когда будет получен результат
if (e.Url.Query.IndexOf("code=") != -1 || e.Url.Query.IndexOf("oauth_verifier=") != -1)
{
// результат получен, извлекаем код авторизации
// из строка параметров запроса
// e.Url.Query // <= строка параметров запроса
// либо oauth_verifier, либо code - точно уже не помню
}
}
code=полученный код
client_id=идентификатор приложения
client_secret=секретный ключ
grant_type=authorization_code