Как создать ярлык оболочки контекста щелчка правой кнопкой “редактирование с Emacs”?

Я думаю, что если кто-то захочет использовать PHP и MySQL или какой-нибудь другой сервер базы данных:

  1. Подумайте об обучении PDO (объекты данных PHP) - это база данных уровень доступа, обеспечивающий единый метод доступа к нескольким базам данных.
  2. Подумайте об обучении MySQLi
  3. Используйте собственные функции PHP, такие как: strip_tags , mysql_real_escape_string или если переменная числовая, просто (int)$foo. Подробнее о типах переменных в PHP читайте здесь . Если вы используете библиотеки, такие как PDO или MySQLi, всегда используйте PDO :: quote () и mysqli_real_escape_string () .

Примеры библиотек:

---- PDO

----- Никакие заполнители - не спешили для SQL-инъекций! Это плохо

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values ($name, $addr, $city)");

----- Без имени заполнители

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) values (?, ?, ?);

----- Именованные заполнители

$request = $pdoConnection->("INSERT INTO parents (name, addr, city) value (:name, :addr, :city)");

--- MySQLi

$request = $mysqliConnection->prepare('
       SELECT * FROM trainers
       WHERE name = ?
       AND email = ?
       AND last_login > ?');

    $query->bind_param('first_param', 'second_param', $mail, time() - 3600);
    $query->execute();

PS:

PDO побеждает в этом сражении с легкостью. Благодаря поддержке двенадцати различных драйверов баз данных и именованных параметров мы можем игнорировать небольшую потерю производительности и привыкнуть к ее API. С точки зрения безопасности, оба они являются безопасными, пока разработчик использует их так, как они должны использоваться

. Но хотя PDO и MySQLi довольно быстры, MySQLi выполняет незначительную скорость в тестах - ~ 2,5% для незаготовленных отчетов и ~ 6,5% для подготовленных.

И, пожалуйста, проверьте каждый запрос в своей базе данных - это лучший способ предотвратить инъекцию.

23
задан mirabilos 3 January 2015 в 15:44
поделиться

6 ответов

Вот то, что я имею - подобный некоторому другому ответу. Создайте новый текстовый файл где-нибудь под названием emacs-conextmenu.reg (или anything-you-want.reg) и вставьте следующее в:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell]
[HKEY_CLASSES_ROOT\*\shell\openwemacs]
@="&Edit with Emacs"
[HKEY_CLASSES_ROOT\*\shell\openwemacs\command]
@="Absolute\\Path\\to\\your\\emacs\\bin\\emacsclientw.exe -n \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs]
@="Edit &with Emacs"
[HKEY_CLASSES_ROOT\Directory\shell\openwemacs\command]
@="Absolute\\Path\\to\\your\\emacs\\bin\\emacsclientw.exe -n \"%1\""

Изменение путь к Вашему emacs пути установки; не забудьте выходить "\" (каждый раз, когда Вы имеете \, изменение это к \\).

Теперь все, что необходимо сделать, является двойным щелчком этот *.reg файл в проводнике, и у Вас должна быть запись контекстного меню для emacs для любого файла и любого каталога (если Вы будете сушеным вентилятором!).

Примечание, что для этого для работы emacs должен быть запущен и emacs-сервер также, должно быть запущено (M-x запускаются сервер). Я предложил бы запустить emacs с Windows и поместил бы (запускаются сервер) в Вашем .emacs файле.

В качестве награды, следующий отрывок для автогорячей клавиши ( http://www.autohotkey.com/ ) запустит файл, выбранный в emacs при нажатии ctrl-shift-enter в Windows Explorer. Это могло бы быть более удобно, если Вы редактируете много файлов в emacs, но не обязательно хочет перейти в файл в самом emacs.

#IfWinActive ahk_class CabinetWClass 
^+Enter::
  GetText(tmpvar)
  If (tmpvar != "")
     Run, d:/path/to/your/emacs/bin/dir/emacsclientw.exe -n "%tmpvar%"
Return
Return
29
ответ дан polyglot 29 November 2019 в 01:14
поделиться

Если Вы не для spelunking реестр, можно сделать это от Windows Explorer (инструкции для любого редактора, не просто Emacs):

  1. Открывают Windows Explorer и выбирают Tools\Folder Options... пункт меню.

  2. Нажимают File Types вкладка и выбирают расширение для типа файла, который Вы хотите связать со своим редактором. Для этого примера я буду использовать расширение TXT.

  3. Щелчок Advanced кнопка в деталях структурируют для перевода в рабочее состояние Edit File Type диалоговое окно.

  4. можно или изменить ток open действие или определить новое действие как Open with MyEditor.

    , Если Вы принимаете решение отредактировать, нажмите Edit... кнопка и в Application used to peform action текстовое поле, поместите полный путь в своего редактора, сопровождаемого "%1". Например, C:\SciTe\wscite\SciTE.exe "%1".

    , Если Вы хотите создать новое действие, нажмите New... кнопка, дайте действию имя и дайте полный путь своему редактору, сопровождаемому [1 111].

  5. , Если Вы хотите сделать действие значением по умолчанию для того типа файла, выберите действие, затем нажмите Set Default кнопка.

  6. OK из всех диалоговых окон.

Другая опция состояла бы в том, чтобы поместить ярлык на исполняемый файл Вашего редактора в Вашем Send To папка, %USERSPROFILE%\SendTo. Я обычно создаю новую папку в здесь вызванных "Редакторах" и помещаю ярлыки на различных редакторов, которых я использую.

5
ответ дан Patrick Cuff 29 November 2019 в 01:14
поделиться

Этот сайт объясняет, как сделать это с другим приложением. Просто измените путь, и Вы должны быть все установлены.

Создают этот ключ/значение:

[HKEY_CLASSES_ROOT\*\shell\Edit with AppName\command]
@=”\”C:\\Program Files\\Notepad2\\Notepad2.exe\” \”%1\”"

Вот другая ссылка , за которым немного легче следовать.

2
ответ дан Michael Haren 29 November 2019 в 01:14
поделиться

Проверьте распределение Emacs с интеграцией Windows: http://ourcomments.org/Emacs/EmacsW32.html

Его установщик создает запись меню Explorer, которая делает то, что Вы хотите.

2
ответ дан js. 29 November 2019 в 01:14
поделиться

Вот, другой способ сделать то же самое. Работы в WinXP и Vista.

Добавляют это к Вашему реестру:

edit-with-emacs.reg

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Emacs]
@="Edit With &Emacs"
[HKEY_CLASSES_ROOT\*\shell\Emacs\command]
@="Wscript.exe C:\\emacs\\emacs-22.3\\bin\\launch-emacs-client.vbs \"%1\""

Место этот файл в Вашем emacs каталоге bin:

Примечание launch-emacs-client.vbs

Set objShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

If WScript.Arguments.Count = 1 Then

  strComputer = "."

  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

  Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")

  Dim isRunning
  isRunning = False

  For Each objItem in colItems
    If InStr(objItem.CommandLine, "emacs.exe") Then
      isRunning = True
    End If
  Next

  If isRunning Then
    objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/emacsclientw.exe -n """ & WScript.Arguments(0) & """")
  Else
    objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe """ & WScript.Arguments(0) & """")
  End If

Else
  objShell.Run(fso.GetParentFolderName(WScript.ScriptFullName) & "/runemacs.exe")
End If

: установщик W32 запускает подобный скрипт на установке.

2
ответ дан Justin Tanner 29 November 2019 в 01:14
поделиться

Я хочу добавить к ответу полиглота выше - ярлык AutoHotkey, о котором он упоминает, очень удобен, но код неполный: функция GetText () была написана кем-то на форуме AutoHotkey ( http://www.autohotkey.com/forum/viewtopic.php?p=279576#279576 ), и это:

GetText(ByRef MyText = "")
{
   SavedClip := ClipboardAll
   Clipboard =
   Send ^c
   ClipWait 0.1
   If ERRORLEVEL
   {
      Clipboard := SavedClip
      MyText =
      ERRORLEVEL := 1
      Return
   }
   MyText := Clipboard
   Clipboard := SavedClip
   Return MyText
}

;to test: 
#k::
GetText(FileName)
msgbox clipboard=%FileName%
return

Обратите внимание, что задержку ClipWait, возможно, нужно изменить: мне пришлось ее установить к 2!

1
ответ дан 29 November 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: