function get_ip($domain)
{
$ip = gethostbyname($domain);
var_dump($this->domains_ip);
if (!is_array($this->domains_ip))
{
echo 'domains_ip не является массивом!';
}
$this->domains_ip[$ip] = $domain;
return $ip;
}
function get_ip($domain)
{
$ip = gethostbyname($domain);
$this->domains_ip[$ip] = $domain;
var_dump($ip);
var_dump($this->domains_ip);
return $ip;
}
private $domains_ip = [];
$padding: 8px;
div {
padding: $padding; // 8px
}
@media (min-width: $screen-tablet) {
$padding: 4px;
div {
padding: $padding; // 4px
}
}
$padding: 8px;
div {
padding: $padding; // 8px
}
@media (min-width: $screen-tablet) {
div {
padding: ($padding - 4); // 8 - 4 = 4px
}
}
sudo visudo
sudo nano /etc/sudoers
имяПользователя ALL=(ALL) NOPASSWD:ALL
sudo service sudo restart
<h2>Запись #1</h2>
<div class="share42init"
data-url="http://ссылка на запись"
data-title="Заголовок записи"
data-description="Описание записи">
</div>
<h2>Запись #2</h2>
<div class="share42init"
data-url="http://ссылка на запись 2"
data-title="Заголовок записи 2">
</div>
<h2>Запись #3</h2>
<div class="share42init"
data-url="http://ссылка на запись 3"
data-title="Заголовок записи 3">
</div>
<script type="text/javascript" src="http://site.name/share42/share42.js"></script>
var f = new Form2();
f.Owner = this;
f.FormClosed += (object s, FormClosedEventArgs args) =>
{
MessageBox.Show("Форма закрыта!");
};
f.Show();
private void button1_Click(object sender, EventArgs e)
{
var f = new Form2();
f.Owner = this;
f.FormClosed += Form2_FormClosed;
f.Show();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Форма закрыта!");
}
var f = new Form2();
f.Owner = this;
// главная форма будет недоступна
f.ShowDialog();
// после закрытия диалоговой формы, выполнение продолжится
MessageBox.Show("Форма закрыта!");
dataAdapter = new SqlDataAdapter("Имя процедуры", connectionString);
dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
var connection = new SqlConnection(connectionString);
// connection.Open();
var cmd = new SqlCommand("Имя процедуры", connection);
cmd.CommandType = CommandType.StoredProcedure;
dataAdapter = new SqlDataAdapter(cmd);
<VirtualHost 127.0.0.1:80>
DocumentRoot /home/mysite.ru/www
ServerName mysite.ru.local
# ServerAlias mysite.ru
# ...все остальное...
</VirtualHost>
127.0.0.1 mysite.ru.local
s = s + (base64[i + 1] + base64[i]);
s = s + (base64[i + 1].ToString() + base64[i].ToString());
byte[] data;
data = Convert.FromBase64String(DecryptBFF(book.Content));
File.WriteAllBytes("output.swf", data);
printf("Errormessage: %s\n", mysqli_error($link));
$query = "SELECT * FROM users WHERE `username`= '$username_login' LIMIT 1";
$query = "SELECT * FROM users LIMIT 1";
$link = mysqli_connect("localhost", "имя пользователя", "пароль", "имя базы");
if (!$link)
{
echo mysqli_connect_error();
}
www.mysql.ru/docs/man/SELECT.html
Выражение LIMIT может использоваться для ограничения количества строк, возвращенных командой SELECT. LIMIT принимает один или два числовых аргумента. Эти аргументы должны быть целочисленными константами. Если заданы два аргумента, то первый указывает на начало первой возвращаемой строки, а второй задает максимальное количество возвращаемых строк. При этом смещение начальной строки равно 0 (не 1):mysql> SELECT * FROM table LIMIT 5,10; # возвращает строки 6-15
Если задан один аргумент, то он показывает максимальное количество возвращаемых строк:mysql> SELECT * FROM table LIMIT 5; # возвращает первых 5 строк
SELECT * FROM `users` ORDER BY `money` DESC LIMIT 1, 2
$file = fopen('mes.txt', 'w+');
mode | Описание |
---|---|
'r' | Открывает файл только для чтения; помещает указатель в начало файла. |
'r+' | Открывает файл для чтения и записи; помещает указатель в начало файла. |
'w' | Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пробует его создать. |
'w+' | Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать. |
'a' | Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. |
'a+' | Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. |
'x' | Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст ошибку уровня E_WARNING . Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2). |
'x+' | Создаёт и открывает для чтения и записи; иначе имеет то же поведение что и'x'. |
'c' | Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличии от 'w'), и вызов к этой функции не вызывает ошибку (также как и в случае с 'x'). Указатель на файл будет установлен на начало файла. Это может быть полезно при желании заблокировать файл (смотри flock()) перед изменением, так как использование 'w' может обрезать файл еще до того как была получена блокировка (если вы желаете обрезать файл, можно использовать функцию ftruncate() после запроса на блокировку). |
'c+' | Открывает файл для чтения и записи; иначе имеет то же поведение, что и 'c'. |
bindtextdomain('example', './local');
textdomain('example');
echo gettext("Hello world!");
echo gettext("Test123");
sudo apt-get install gettext
xgettext --extract-all --default-domain=example --from-code=utf-8 /путь к проекту/*.php
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-15 14:55+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Hello world!"
msgstr ""
msgid "Test123"
msgstr ""
msgid "Hello world!"
msgstr "Привет, мир!"
msgid "Test123"
msgstr "Тест123"
msgfmt --output-file="/путь к файлу.mo" "/путь к файлу.po"
#!/bin/bash
lang="$1"
path="$(cd "$(dirname "$0")" && pwd)"
if [[ -n "$lang" ]]; then
path="$path/$lang"
if [[ ! -d "$path" ]]; then
mkdir "$path"
fi
fi
cd "$path"
find "$path" -name "*.po" | while read -r f; do
po_dir="$(dirname $f)"
po_file="$(basename $f)"
po_name="$(echo $po_file | cut -d'.' -f1)"
msgfmt --output-file="$po_dir/$po_name.mo" "$f" && \
printf "Created: $po_dir/$po_name.mo\n" || \
printf "ERROR: Could not create mo-file from: $f\n"
done
bindtextdomain('example', './local');
textdomain('example');
/local/ru/LC_MESSAGES/messages.mo
/local/en/LC_MESSAGES/messages.mo
/local/en_US/LC_MESSAGES/messages.mo
/local/ru_GB/LC_MESSAGES/messages.mo
/local/[Код культуры]/LC_MESSAGES/messages.mo
// создаем переменную типа EventHandler
EventHandler handler = null;
// создаем анонимный метод для обработки события и передаем его переменной
handler = (sender, e) =>
{
MessageBox.Show("Hello!");
// удаляем обработчик
((Button)sender).Click -= handler;
};
// добавляем обработчик
button1.Click += handler;
// добавляем обработчик
button1.Click += (sender, e) =>
{
MessageBox.Show("Hello!");
// получаем поле EventClick
var f = typeof(Control).GetField
(
"EventClick",
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static
);
// получаем значение EventClick для sender
var k = f.GetValue(sender);
// получаем свойство
var p = sender.GetType().GetProperty
(
"Events", BindingFlags.NonPublic | BindingFlags.Instance
);
// получаем значение свойства Events для sender
var events = (EventHandlerList)p.GetValue(sender, null);
// удаляем обработчик из списка событий
events.RemoveHandler(k, events[k]);
};
public class Toster
{
public event EventHandler AnyEvent;
public void AnyEventHarakiri()
{
foreach (Delegate d in this.AnyEvent.GetInvocationList())
{
this.AnyEvent -= (EventHandler)d;
}
}
}
var t = new Toster();
t.AnyEvent += (sender, e) => { };
t.AnyEventHarakiri();
string filePath = "123.jpg";
using (var file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Inheritable))
{
pictureBox1.Image = Image.FromStream(file);
}
File.Delete(filePath);
public class MyClass
{
public readonly int Value = 0;
public MyClass()
{
this.Value = 123;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Timers;
using System.Threading;
namespace ConsoleApplication20
{
class Program
{
static void Main(string[] args)
{
// создаем экземпляр класса
var t = new Toster(199065);
// выводим значение константы ProjectName
// доступ только через Toster
Console.WriteLine(Toster.ProjectName);
// доступа к локальным константам здесь нет
// Toster.CounterPattern
// t.CounterPattern
// выводим заголовок вопроса
Console.WriteLine(t.Title);
// бесконечность - не предел!
while (true)
{
// t.Id = 123;
// мы не можем поменять идентификатор
// следовательно, этот код, логически, будет работать правильно
// выводим число ответов
Console.WriteLine("Ответов: {0}", t.AnswersCount);
// t.AnswersCount = 123
// мы не можем менять значение readonly свойства,
// но оно может меняться внутри экземпляра класса
// пауза 10 сек.
Thread.Sleep(10000);
}
}
}
public class Toster
{
// публичная константа, доступ через Toster
public const string ProjectName = "Тостер";
// локальная константа, доступна только в рамках этого класса
const string CounterPattern = "<span class=\"section-header__counter\" role=\"answers_counter\">";
// публичные поля только для чтения
// значение может быть установлено в конструкторе
public readonly string Title = "Нет данных";
public readonly int Id = 0;
// свойство только для чтения
// значение может меняться в процессе жизни экземпляра класса
// при помощи локальной переменной
private int _AnswersCount = 0;
public int AnswersCount
{
get
{
return _AnswersCount;
}
}
// это просто таймер
private System.Timers.Timer Timer = null;
// а это конструктор<s>, но не Lego</s>
public Toster(int id)
{
if (id <= 0) { return; }
// получаем вопрос
var web = new WebClient();
web.Encoding = Encoding.UTF8;
var result = web.DownloadString(String.Format("https://toster.ru/q/{0}", id));
// из шаблона url тоже можно сделать константу
// либо в классе можно сделать readonly свойство,
// которое будет на лету формировать итоговый адрес:
// return String.Format("https://toster.ru/q/{0}", this.Id)
// устанавливаем значения для полей
this.Id = id;
this.Title = WebUtility.HtmlDecode
(
result.Substring
(
result.IndexOf("<title>") + "<title>".Length,
result.IndexOf("</title>") - result.IndexOf("<title>") - "<title>".Length
)
);
// выдергиваем число ответов на вопрос
this.ParseAnswersCount(result);
// запускаем периодическую проверку <s>Менделеева</s>
Timer = new System.Timers.Timer(10000);
Timer.Elapsed += Timer_Elapsed;
}
// обработчик истечения интервала времени
private void Timer_Elapsed(object sender, EventArgs e)
{
var web = new WebClient();
web.Encoding = Encoding.UTF8;
var result = web.DownloadString(String.Format("https://toster.ru/q/{0}", this.Id));
this.ParseAnswersCount(result);
}
// выдергиватель количества ответов
private void ParseAnswersCount(string value)
{
int startstart = value.IndexOf("Ответы на вопрос");
int start = value.IndexOf(CounterPattern, startstart) + CounterPattern.Length;
int len = value.IndexOf("</span>", start) - start;
_AnswersCount = Convert.ToInt32(value.Substring(start, len));
}
}
}
private void button1_Click(object sender, EventArgs e)
{
// создаем меню
var menu = new MenuStrip();
menu.Items.Add("Меню");
// перебираем узлы
foreach (TreeNode n in treeView1.Nodes)
{
// создаем элемент меню
var menuItem = new ToolStripMenuItem();
menuItem.Text = n.Text;
// перебирем детей
ConvertNodeToMenu(menuItem, n);
// добавляем элемент в меню
((ToolStripMenuItem)menu.Items[0]).DropDownItems.Add(menuItem);
}
// добавляем меню на форму
this.Controls.Add(menu);
}
private void ConvertNodeToMenu(ToolStripMenuItem menuParent, TreeNode node)
{
foreach (TreeNode n in node.Nodes)
{
// создаем элемент меню
var menuItem = new ToolStripMenuItem();
menuItem.Text = n.Text;
// перебираем детей
ConvertNodeToMenu(menuItem, n);
// добавляем элемент в меню
menuParent.DropDownItems.Add(menuItem);
}
}
private void button1_Click(object sender, EventArgs e)
{
// создаем меню
var menu = new MenuStrip();
menu.Items.Add("Меню");
// берем первый элемент меню
var menuItem = (ToolStripMenuItem)menu.Items[0];
// получаем узлы и добавляем в меню
menuItem.DropDownItems.AddRange
(
treeView1.Nodes.Cast<TreeNode>().Select
(
n => new ToolStripMenuItem(n.Text, null, ConvertNodeToMenu(n))
).ToArray()
);
// добавляем меню на форму
this.Controls.Add(menu);
}
private ToolStripMenuItem[] ConvertNodeToMenu(TreeNode node)
{
return node.Nodes.Cast<TreeNode>().Select
(
n => new ToolStripMenuItem(n.Text, null, ConvertNodeToMenu(n))
).ToArray();
}