Просто, что отличает эти языки при написании десктопных приложений?Нативность процесса, в первую очередь. И возможно конечная кросс-платформенность полученных решений. В C#, точнее в платформе .NET есть отличная интеграция (лучше слова подобрать не смог) с такими привычными многим штуками как WinForms например, и вообще он изначально создавался конкретно для разработки чего-то подобного, именно под Windows (в первую очередь). Python изначально разрабатывался как платформо-независимый язык и в своём базовом арсенале, чего-либо сравнимого с функционалом построения различных форм на C#/.NET, из коробки не имеет. А ещё у C# есть отличная IDE идущая вместе с ним в комплекте (Visual studio), причём бесплатная, а ещё там есть WPF и разные другие штуки. Но я бы всё равно не сравнивал языки в таком контексте, слишком "топорное" сравнение.
Скорость? (хотя это метрика относительная, у любого языка есть 100500 способов ускориться)Я бы не стал заострять внимание на этом показателе.
На каком языке проще использовать возможности 64-битной архитектуры?Не понятно, про какие именно возможности идёт речь... Но, по моему, от языка это вообще мало зависит.
На каком языке проще сделать программу что бы она запускалась как можно на больших версиях винды без переделки, т.е. XP, Vista, 7, 8, 8.1, 10 и т.д.?На любом языке, в но в качестве платформы - я бы порекомендовал конкретно .NET Framework 4.0, т.к. более поздних версий оного под XP, насколько я помню, не существует.
На каком языке проще добраться до системных API если мне надо добраться до аудиоустройства или видеокарты? (ну просто С мы тут не рассматриваем в сравнении)Не могу сказать наверняка, но скорее всего, ни на каком из них. Из коробки, языки высокого уровня, обычно не поддерживают низкоуровневые операции. Готовых же библиотек, в т.ч. низкоуровневых, для компенсации данного недостатка хватает обычно для любых языков. А вообще, это очень обширная тема, "добраться" до устройства можно очень разными способами... и на разных уровнях. Можно написать свой драйвер (в этом случае, вряд ли какой-то язык из списка подойдёт), а можно использовать WinAPI или какие-то готовые функции написанных кем-то ранее драйверов...
mkdir workplace
cd workplace
git clone [path to project]
cd [project directory name]
npm install
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/example.com;
location / {
proxy_pass "http://127.0.0.1:3000";
}
}
npm start
Тоже можно создавать один файл(скрипт) и на него слать все запросы
Как еще можно обмениваться данными с сервером
короткие сообщения - "данные получены успешно", "почта отправлена" и.т.д?
echo "ok";
echo "почта отправлена";
<?php
// PSR-1, PSR-2, PSR-4 Читаем и пользуем!
// namespace все дела... "Model_admin" - это прошлое.
// phpDocumentor - твой друг, прописывай всюду типы данных
class Model_admin extends Model
{
// Лишний перевод строки
private $name;
private $password;
private $code;
private $mail;
// Не информативное название. get model admin... что бы это значило...
public function get($login, $password) {
// Где проверка аргумантов? Влететь может что угодно
$this->name = $login;
$this->password = $password;
// Модель НЕ должна управлять подключением к БД, это должно выполняться выше в коде
$this->db_connect();
// Код вообще проверялся?)) у вас закрывающей строки нет.
$result = msql_query("SELECT 'login', 'password', 'mail' FROM 'admin_authorization'";
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
$arr = mysql_fetch_array($result);
// Зачем нужен цикл, это дро*ба БД!!! Вытягиваете одну запись по логину и проверяете соответствует ли пароль
do {
// Лишний перевод строки
if ($login === $arr['login']) {
// Лишний перевод строки
if (
md5( md5( trim( $password ))) === $arr['password']
) {
$this->mail = $arr['mail'];
$this->random_code();
// Перед return лучше делать перевод строки
return true;
}
// Лишний перевод строки
}
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
// Присваивание в условиях управляющих кнострукций лучше не делать, это операции разного характера
} while ($arr = mysql_fetch_array($res));
return false;
// Лишний перевод строки
}
private function random_code($length = 15) {
// Где проверка аргумантов? Влететь может что угодно
$symbols = '0123456789abcdefghijklmnopqrstuvwxyz_-~!+*%$#&';
for ($i = 0; $i < (int)$length; $i++)
{
$num = rand (1, strlen ($symbols));
$this->code .= substr ($symbols, $num, 1);
}
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
$bool_update = mysql_query('UPDATE "admin_authorization" SET code="'.$this->code.'" WHERE login="'.$this->name.'"');
// Вот так писать плохо, всегда используйте фигурные скобки.
if ($bool_update) $this->send_code();
// Лишний перевод строки
}
private function send_code() {
// Модель НЕ должна отправлять письма, под отправку обычно пишется отдельная подсистема/сервис
mail ($this->mail, "Admin code", $this->code);
}
public function check_code($user_code) {
// Где проверка аргумантов? Влететь может что угодно
// SQL инъекция!!!!
// сие уже deprecated, забудьте про mysql_*** функции, используйте PDO
$this->code = mysql_query("SELECT 'code' FROM admin_authorization WHERE code='".$user_code."'");
// Вот так писать плохо, всегда используйте фигурные скобки.
if ($this->code != '') return true;
}
// Лишний перевод строки
}
$user = new User(); // Создаем "сущность" нового пользователя.
$user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
$user->password = '123456'; // Устанавливаем пароль этому пользователю.
$user->save(); // Сохраняем пользователя.
$user = new User();
$user->login = 'D3lph1'; // Устанавливаем его логин равным 'D3lph1'.
$user->password = '123456'; // Устанавливаем пароль этому пользователю.
$manager = ... // получаем объект менеджера (Например, из DI контейнера).
$manager->persist($user); // "Скармливаем" новоиспеченного пользователя нашему менеджеру.
// $manager->persis($user1); // Мы можем создать еще одного пользователя и уведомить менеджер об этом.
// $manager->persis($user2); // И еще одного...
$manager->flush(); // После выполнения этого метода данные отправятся в базу данных.
$result = $qb
->select(['id', 'login'])
->where('id', '<>', 3)
->get();
[0-9]{3}(x|х)[0-9]{2}