Виртуализация установленной ОС?
Существует ли решение, позволяющее запускать гостевую ОС, которая функциональна сама по себе? То есть, например, основная система — Mac OS X, под виртуалкой крутится Windows 7, но при необходимости можно ребутнуться в ту же самую винду.
Вопрос к PERL программистам
Есть perl демон:
#!/usr/bin/perl -w
###Подключение всех необходимых модулей###
use strict;
use POSIX;
use POSIX ":sys_wait_h";
use IO::Socket;
use IO::Handle;
###Создаем процесс-демон###
my $pid= fork();
exit() if $pid;
die "Couldn't fork: $! " unless defined($pid);
###Создаем связь с новым терминалом###
POSIX::setsid() or die "Can't start a new session $!";
###Переменная - бесконечное время жизни сервера###
my $time_to_die =0;
###Переменная - интернет-сокет или сервер###
my $server;
###Функция обработчик сигналов INT и TERM###
###Она срабатывает перед этими сигналами###
sub signal_handler{
$time_to_die = 1;
close($server);
}
$SIG{INT}= $SIG{TERM} = $SIG{HUP} = \&signal_handler;
###Функция обработчик сигнала CHLD - для уборки процессов зомби ###
sub REAPER {
while ((my $waitedpid = waitpid(-1,WNOHANG)) > 0) { }
$SIG{CHLD} = \&REAPER
}
###Заполняем массив разрешенных команд при старте сервера###
###Создаем интернет сокет на порту 17403###
my $server_port=17403;
$server= new IO::Socket::INET(LocalPort => $server_port,
TYPE => SOCK_STREAM,
Reuse => 1,
Listen => 10)
or die "Couldn't be a tcp server on port $server_port: $@\n";
###Сервер работает до бесконечности пока его не вырубит Term ###
until($time_to_die){
my $client;
my $req;
###Обрабатываем входящие подключения
while($client = $server->accept()){
###Включаем обработку зомби###
$SIG{CHLD} = \&REAPER
###Тот который постучался, отделяем в отдельный процесс###
defined(my $child_pid=fork()) or die "Can't fork new child $!";
###Родительский процесс идет в конец и ждет следующего подключения###
next if $child_pid;
###Дочернему процессу копия сокета не нужна, её закрываем###
if($child_pid == 0) {
close($server);
}
###Очистка буфера###
$client->autoflush(1);
my $response = <$client>;
my @get_req = split(' ', $response);
print $client $get_req[1];
exit;
}
continue {
close($client);
}
}
* This source code was highlighted with Source Code Highlighter.
Данный демон запускается и слушает указанный порт, и при запросе к нему скажем через браузер.
sitename.ru:17403/?param=1¶m2=2
он создаст процесс свою копию, обработает запрос этим процессом и отдаст клиенту "/?param=1¶m2=2". После этого закроет этот процесс.
Вопрос в том, всё ли правильно написано и всё ли правильно я понимаю и главное будет ли это работать так как я описал?
#!/usr/bin/perl -w
###Подключение всех необходимых модулей###
use strict;
use POSIX;
use POSIX ":sys_wait_h";
use IO::Socket;
use IO::Handle;
###Создаем процесс-демон###
my $pid= fork();
exit() if $pid;
die "Couldn't fork: $! " unless defined($pid);
###Создаем связь с новым терминалом###
POSIX::setsid() or die "Can't start a new session $!";
###Переменная - бесконечное время жизни сервера###
my $time_to_die =0;
###Переменная - интернет-сокет или сервер###
my $server;
###Функция обработчик сигналов INT и TERM###
###Она срабатывает перед этими сигналами###
sub signal_handler{
$time_to_die = 1;
close($server);
}
$SIG{INT}= $SIG{TERM} = $SIG{HUP} = \&signal_handler;
###Функция обработчик сигнала CHLD - для уборки процессов зомби ###
sub REAPER {
while ((my $waitedpid = waitpid(-1,WNOHANG)) > 0) { }
$SIG{CHLD} = \&REAPER
}
###Заполняем массив разрешенных команд при старте сервера###
###Создаем интернет сокет на порту 17403###
my $server_port=17403;
$server= new IO::Socket::INET(LocalPort => $server_port,
TYPE => SOCK_STREAM,
Reuse => 1,
Listen => 10)
or die "Couldn't be a tcp server on port $server_port: $@\n";
###Сервер работает до бесконечности пока его не вырубит Term ###
until($time_to_die){
my $client;
my $req;
###Обрабатываем входящие подключения
while($client = $server->accept()){
###Включаем обработку зомби###
$SIG{CHLD} = \&REAPER
###Тот который постучался, отделяем в отдельный процесс###
defined(my $child_pid=fork()) or die "Can't fork new child $!";
###Родительский процесс идет в конец и ждет следующего подключения###
next if $child_pid;
###Дочернему процессу копия сокета не нужна, её закрываем###
if($child_pid == 0) {
close($server);
}
###Очистка буфера###
$client->autoflush(1);
my $response = <$client>;
my @get_req = split(' ', $response);
print $client $get_req[1];
exit;
}
continue {
close($client);
}
}
* This source code was highlighted with Source Code Highlighter.
Самый чистый способ найти совпадение в списке
Как лучше всего найти что-то в списке? Я знаю, что у LINQ есть несколько хороших трюков, но давайте также получим предложения для C# 2.0. Давайте получим лучшие рефакторинги для этого общего шаблона кода.
В настоящее время я использую такой код:
// mObjList is a List<MyObject>
MyObject match = null;
foreach (MyObject mo in mObjList)
{
if (Criteria(mo))
{
match = mo;
break;
}
}
или
// mObjList is a List<MyObject>
bool foundIt = false;
foreach (MyObject mo in mObjList)
{
if (Criteria(mo))
{
foundIt = true;
break;
}
}
Почему у Ruby нет настоящего StringBuffer или StringIO?
Недавно я прочитал хороший пост об использовании StringIO в Ruby. Однако автор не упоминает, что StringIO -это просто "I.", нет "O.", вы не можете этого сделать, например:
s = StringIO.new
s << 'foo'
s << 'bar'
s.to_s
# => should be "foo\nbar"
# => really is ''`
Ruby действительно нуждается в StringBuffer точно так же, как и тот, который есть у Java. StringBuffers служат двум важным целям. Во-первых, они позволяют вам проверить выходную половину того, что делает Ruby StringIO. Во-вторых, они полезны для создания длинных струн из маленьких частей-то, что Джоэл напоминает нам снова и снова, в противном случае очень медленно.
Есть ли хорошая замена?
Это правда, что строки в Ruby изменчивы, но это не значит, что мы всегда должны полагаться на эту функциональность. Если stuff является большим, то требования к производительности и памяти этого, например, действительно плохи.
result = stuff.map(&:to_s).join(' ')
"correct" способ сделать это в Java-это:
result = StringBuffer.new("")
for(String s : stuff) {
result.append(s);
}
Хотя мой Java немного заржавел.
Экспорт MySQL с пользователями?
Встала задача перехать на другой VDS. На обоих машинах стоит ISPManager, но он отказывается делать импорт пользователя — постоянно ошибки. Решил делать в ручную, но очень не хочется создавать заново пользователей MySQL, потом их прописывать в скриптах и делать прочие сопутствующие вещи.
Можно ли как то сделать экспорт всех баз вместе с пользователями, сохранив их пароли?
Каковы преимущества явного Транзитивного замыкания соединения в SQL?
Когда я соединяю три или более таблиц вместе общим столбцом, я бы написал свой запрос следующим образом:
SELECT *
FROM a, b, c
WHERE a.id = b.id
AND b.id = c.id
недавно коллега спросил меня, почему я не сделал явного Транзитивного закрытия соединения в своих запросах, подобных этому:
SELECT *
FROM a, b, c
WHERE a.id = b.id
AND b.id = c.id
AND c.id = a.id
действительно ли есть какие-то преимущества для этого? Конечно, оптимизатор может подразумевать это для себя?
edit: я знаю, что это злой синтаксис, но это быстрый и грязный пример законного унаследованного кода +1 @ Stu для его очистки
Лучший способ реализовать грязный флаг в EF
Вы можете легко использовать события PropertyChanges для установки флага. Но как вы легко сбросить его после сохранения в ObjectContext ?
Работа с vk.com api?
Господа, в рамках обучения пишу небольшую програмульку под WP7 для работы с VK. Приложение авторизируется чисто программным способом (аналогично вот этому goo.gl/YSV9z). Выставляется битовая маска доступа. Но при запросе getUserSettings всегда получаю что маска выставлена в 0 — то есть у приложения нет никаких прав.
Для себя я могу выставить настройки через сам VK.com — как сделать это для других пользователей?
Так же нашел упоминания про test mode для приложений, но лишь упоминания, как им пользоваться найти не удалось.
Подскажите решения для синхронизации данных через интернет
Может есть какие-нибудь решения позволяющие синхронизировать несколько компьютеров по технологии bittorent, например?
Запускаешь приложение дома, на работе и на ноуте.
Имеешь три одинаковых копии определённой папки.
При изменении в одном месте — остальное скачивают это к себе.
То есть что-то наподобие дропбокса, но без сохранения где-то в облаке за деньги.
Для истории, добавлю тут ссылку на статью о wuala.
Остановился на этом решении.
UPD
Перехожу на это решение: habrahabr.ru/blogs/p2p/120498/
Дома удобнее через р2р обмениваться. Да и не надо заморачиваться с торговлей местом.
Утилиты для работы с удалённым SQLite по FTP
Добрый день.
Перевожу часть некритичных вещей с хранения сериализованных данных на sqlite.
Есть ли такие инструменты(бесплатные) которые позволяют работать с удалённым sqlite напр. по FTP?
Нужны базовые возможности на создание таблиц, изменение структуры, управление содержимым…
Заранее спасибо!
- «
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- »