LINUX.ORG.RU

3
Всего сообщений: 23

ansible: community.mysql.mysql_user - как шаблонизировать имя базы?

Пытаюсь назначить права на базу, используя community.mysql.mysql_user

Не пойму, как правильно вписать шаблон {{ db_name }} в такой плейбук (привожу в сокращении):

community.mysql.mysql_user:
  name: '{{ db_user }}'
  password: '{{ db_password }}'
  state: present
  priv:
   'username.*': 'ALL' # это работает

Если прописать без шаблона ('mydatabase.*:ALL'), то в mysql создаются нужные привилегии (GRANT ALL PRIVILEGES ON `mydatabase`.* TO `myuser`@`localhost`).

Я пробовал разные варианты написания шаблона. Либо в базу добавляются лишние символы, либо шаблон не раскрывается и прямо в базу записывается {{ db_name }} (буквально). Про syntax error’ы я молчу :)

Есть идеи?

<offtopic>Кстати, ansible - это в Developement или в Admin? </offtopic>

 , , ,

Harliff ()

Вылетает Blender в Manjaro KDE

В общем такая проблема:

Стояла manjaro kde всё было нормально. Но захотелось мне её переставить. После переустановки blender начал работать не правильно. При работе с сторонними аддонами ( в моём случае SpryTile for 2.8 ) blender зависает и вылетает с вот такими строками в терминале:

[mike@mikeglazedev-pc ~]$ blender
Read prefs: /home/mike/.config/blender/2.82/config/userpref.blend
Warning: property 'release_confirm' not found in keymap item 'OperatorProperties'
addon_utils.disable: Sprytile-feature-support_2.8 not disabled
Modules Installed (Sprytile-feature-support_2.8) from '/home/mike/Загрузки/Sprytile-feature-support_2.8.zip' into '/home/mike/.config/blender/2.82/scripts/addons'
Writing: /tmp/blender.crash.txt
Ошибка сегментирования (стек памяти сброшен на диск)

 , , ,

Mike_Glazkow ()

Vim. Включить подсветку синтаксиса в файлах Markdown.

Доброго времени! Подскажите как в редакторе Vim включить подсветку синтаксиса в файлах Markdown (*md).
В файл ~/.vimrc добавил строки

syntax on
filetype plugin on

как заявлено на оф сайте Vim, которые должны включить подсветку синтаксиса. Да, они включили подсветку синтаксиса в некоторых типов файлов, но файлы Markdown по прежнему остаются без подсветки.

 , ,

parnyagan ()

Ошибка синтаксиса при вводе команды nohup.out kwrite &. Почему?

Здравствуйте.

Внутри скрипта работает строка:

nohup.out kwrite file & ;

Bash выдает ошибку синтаксиса, указывая на точку с запятой.

Если убрать ";":

nohup.out kwrite file &

то, все работает нормально. Почему так? Есть ли ограничения на использование ";" в скриптах?

 

Purple ()

Почему в Ocaml такое неочевидное поведение вложенных блоков?

Например:

let println x = print_int x ; print_newline ()
 
let proc0a () =
	print_endline "proc0a" ;
	let x = 1
	in
		println x ;
		let x = 2
		in
			println x ;
		println x
 
let proc0b () =
	print_endline "proc0b" ;
	let x = 1
	in begin
		println x ;
		let x = 2
		in begin
			println x
		end ;
		println x
	end
 
let proc0c () =
	print_endline "proc0c" ;
	let x = 1
	in (
		println x ;
		let x = 2
		in (
			println x
		) ;
		println x
	)
 
let proc1 () =
	print_endline "proc1" ;
	let x = 1
	in
		println x ;
		( let x = 2
		in
			println x
		) ;
		println x
 
let proc p =
	p () ;
	print_newline ()
 
let _ = List.iter proc [ proc0a; proc0b; proc0c; proc1 ]

получаем:

proc0a
1
2
2

proc0b
1
2
2

proc0c
1
2
2

proc1
1
2
1

Я ожидал от proc0(a|b|c) поведения аналогичного proc1, но нет.

В SML поведение соответствует ожиданиям:

fun println x = print (Int.toString x ^ "\n")
 
fun proc0 () = (
	print "proc0\n" ;
	let val x = 1
	in
		println x ;
		let val x = 2
		in
			println x
		end ;
		println x
	end
)
 
val _ = proc0 ()

=>

proc0c
1
2
1

Как и в Haskell:

proc0a = do
	putStrLn "proc0a"
	let x = 1 in do
		print x
		let x = 2 in do
			print x
		print x
 
proc0b = do {
	putStrLn "proc0b" ;
	let x = 1 in do {
		print x ;
		let x = 2 in do {
			print x
		} ;
		print x
	}
}
 
proc1a = do
	putStrLn "proc1a"
	let x = 1 in do
		print x
		let x = 2 in do
			print x
			print x
 
proc1b = do {
	putStrLn "proc1b" ;
	let x = 1 in do {
		print x ;
		let x = 2 in do {
			print x ;
			print x
		}
	}
}
 
main = mapM_ (\p -> p >> putStrLn "") [ proc0a, proc0b, proc1a, proc1b ]

=>

proc0a
1
2
1

proc0b
1
2
1

proc1a
1
2
2

proc1b
1
2
2

Как и в любом другом языке (может, в F#, как, во-многом, наследнике Ocaml, поведение аналогично предку? Лень проверять).

Так почему разработчики Ocaml сделали так, а не как у людей?

 ,

korvin_ ()

Почему оператор != не генерируется автоматически, если определен == ?

Собственно сабж. Вообще логично было бы определять логически противоположные операторы обоюдной негацией (отрицанием?):

struct Comparable {
  // имеем определенный оператор ==
  template <typename T>
  bool operator ==(const T &rhs) const { /* ... */ }

  // тогда было бы логично implicit определить
  template <typename T>
  bool operator !=(T&& rhs) const { 
    return !this->operator ==(std::forward<T>(rhs)); 
  }

  // ну или explicit
  template <typename T>
  bool operator !=(const T&) = default;
};

Я тут сварганил пример (естественно без шаблонов, чтоб меньше потенциальных ошибок): https://wandbox.org/permlink/a4k0hlNVI4UgyDrc

И, как можно видеть, оператор != не определяется автоматически. Вопрос: почему, ЧЯДНТ?

P.S. Нашел на stackoverflow предложение которое не вошло в С++17) но решило бы волпрос: Explicitly defaulted comparison operators

 , , ,

KennyMinigun ()

А чем плох синтаксис современного BASIC?

Прежде всего речь о FreeBASIC.

На мой скромный взгляд, синтаксис весьма хорош и только местами излишне многословен.

Пример неудачного синтакиса (но ИМХО далеко не худшего) :

' Предварительное объявление функции 
' Перегружен по количеству символов
declare function getSomething () as integer
' Но зато можно отличить функцию от процедуры, и это хорошо:
declare sub doSomething ()
' А ещё аргументы читаются по-человечески:
declare function getSomebody (ByVal id as long, ByRef person as PersonalCard) as string

Примеры удачного синтаксиса:

for i=100 to 0 step -1
 for j=20 to 40 step 5
  ...
 next j
next i 
' can be written as "next"

do until A>B
...
loop

do
...
loop until A>B

do while A>B
...
loop

if A>B then
...
else if C>D
...
end if

For i As Integer = 1 To N
    Select Case i
    Case 1, 3, 5, 7, 9
        dummy += 1
    Case 2, 4, 6, 8, 10
        dummy += 1
    Case 11 To 20
        dummy += 1
    Case 21 To 30
        dummy += 1
    Case 31
        dummy += 1
    Case 32
        dummy += 1
    Case 33
        dummy += 1
    Case Is >= 34
        dummy += 1
    Case Else
        Print "can't happen"
    End Select
Next

В целом я не знаю другого языка, у которого синтаксис был столь же человечным и понятным с первого взгляда.

Так почему же ныне так популярен обфусцированный вырвиглазный синтаксис?

Неужели физически набивание кода программы у кого-то отнимает столько времени, что объём кода действительно становится проблемой, и ради сокращения объёма в жертву приносится выразительность синтакиса, его человекочитабельность?

 ,

DRVTiny ()

синтаксис master.cf (postfix)

Доброе утро!

1. В мастере можно один и тот же рестрикшн разбить на строки?

Если у меня будет записано так:

- o smtpd_restrictions_client=blabla1

- o smtpd_restrictions_client=blabla3

- o smtpd_restrictions_client=blabla2

У меня будут все blabla отрабатывать? Или только последний?

2. Если в мастере задаются параметры а=1,б=2,в=3

А в мэйне а=3, д=4

Итоговая политика будет такой:

а=1,б=2,в=3 или а=3,б=2,в=3, д=4

 ,

vehpbkrby ()

Своя подсветка синтаксиса в vim

Всем привет! Есть DSL, в котором комментарии начинаются с решётки (#). Еще в DSL можно писать функции, в которых комментарии начинаются в C/C++ стиле, и комментарии с решетки запрещены. Типа того:

...some code
# comments
proc myfunc @{
     # ошибка! это не комментарий
     // нормальный коммент
     /* еще один
      * нормальный коммент */
@}
...come code

Сейчас я обхожусь этим:

syn region binpacComment start="#" end="$"
syn region binpacComment start="//" end="$"
syn region binpacComment start="\/\*" end="\*\/"
hi def link binpacComment Comment

Но это приводит к тому, что во всем файле просто подсвечиваются как комментарии все три вида: #, //, /* */

А хочется, чтоб вне функций подсвечивалось только #, а в функциях только // и /* */.

Заранее спасибо за любую помощь или пример.

 , ,

Deleted ()

Rust compiler plugins

Кто-нибудь имел дело с кодогенерацией средствами libsyntax или syntex?
Поделитесь источниками откуда брать примеры и объяснения как генерировать растовский AST. Я нашел только syntax extensions, но это не совсем то.
Застрял на создании структуры и имплементации интерфейса к ней.
Должно же быть хоть что-то кроме автогенеренной документации по сигнатурам функций libsyntax.

Есть ли простой способ кодогенерации через linsyntax а-ля syntax-macro-way?

 , ,

mersinvald ()

синтаксис vim

Почему синтаксис подсвечивается только в .bashrc и .vimrc? Если создать файл ТЕСТ и редактировать его вимом- синтаксис не подсвечивается...

 ,

Rot1 ()

Почему не работает?

Есть такой код:

#!/usr/bin/env perl

use strict;
use warnings;
use Data::Dumper;

my $hash = {
    key1   => 'value1',
    key2   => 'value2',
    key3   => 'value3',
};

my @options = map { "--$_" => $hash->{$_} } # line 13
              grep { defined $hash->{$_} }  # line 14
              qw(key1 key4);                # line 15

print Dumper(\@options);

Perl 5.22 выдает такое:

syntax error at ./test.pl line 14, near "grep"
Global symbol "@options" requires explicit package name (did you forget to declare "my @options"?) at ./test.pl line 17.
Execution of ./test.pl aborted due to compilation errors.

Perl 5.10:

Not enough arguments for map at ./test.pl line 14, near "grep"
syntax error at ./test.pl line 14, near "grep"
Execution of ./test.pl aborted due to compilation errors.

«Исправление» вот такое:

-my @options = map { "--$_" => $hash->{$_} } # line 13
+my @options = map { ("--$_") => $hash->{$_} } # line 13

Внимание вопрос: почему не работает первый вариант кода? Что интерпретатору не нравится в кавычках?

 ,

KennyMinigun ()

Получение «ключей» из массива

Доброго дня.

Как известно, в Perl можно запросто сделать хеш из массива:

my @arr = (key1 => 'value1', key2 => 'value2');
# эквивалентно @arr = ('key1', 'value1', 'key2', 'value2')
my %hash = @arr;
for my $key (keys %hash) {
    print "$key => $hash{$key}\n";
}
# выведет
# key2 => value2
# key1 => value1

Что я хочу сделать, это получить индексы элементов массива, которые станут ключами при такой конвертации. Сейчас накостылял вот такую конструкцию:

my @key_indexes = grep { !($_ &1) } 0 .. $#arr;

А если более глобально, то задача стоит такая: на вход подается массив (с чётным количеством элементов) на выходе необходимо сформировать строку вида key1=value1;key2=value2;... но важно сохнанить порядок элементов как в массиве (по этому вариант «через хеш» не подходит).

Сейчас делаю что-то такое:

my $str = join ';', map { qq/$arr[$_]=$arr[$_ + 1]/ } grep { !($_ & 1) } 0 .. $#arr;

Подскажите пожалуйста, как такое сделать элегантнее.

 ,

KennyMinigun ()

Swing - подсветка синтаксиса. Варианты реализации?

Господа, это снова я, только не бейте пожалуйста :) И все еще на Swing, да. Потом буду на пробовать JavaFX, честно.

Хочу простого - многострочное текстовое поле с подсветкой синтаксиса собственного языка. По минимуму - выделение цветом ключевых слов, строк внутри кавычек, числовых констант, и подсветка парных скобок от текущего положения курсора. По максимуму - нет предела совершенству Да, реализация пока на Swing - компонентах, потом планируется вариант на JavaFX. Беглый просмотр инета дал 3 общих варианта:

1) Готовые библиотеки где все из коробки. В принципе не против, только смущает их тяжеловесность, наличие ненужного функционала (мне только свой язык подсвечивать). Но зато там бывает и нумерация строк, и подсветка текущей строки, и свертка-развертка по плюсикам и т.п., что интригует. И конечно надо выбрать библиотеку (например, RSyntaxTextArea) и умудриться подключить её к проекту.

2) Свои написания с нуля на JEditorPane, Document и EditorKit.

3) Вариант 2, но на JTextComponent, java.text.AttributedString и еще каких-то непонятных пока компонентах.

Что посоветуете, доктора?

 , , ,

Ivana ()

А много ли есть языков, где нет фиксированного «синтаксиса»?

Вообще, под синтаксисом часто понимаются разные вещи, понятие довольно расплывчатое. Кстати, есть ли четкое, абсолютно однозначная, каноническая трактовка?

Я бы, наверное, интуитивно определил это так. Не-синтаксис — это только лишь вражения языка. Сюда не входят любые макроопределения, спецформы, statements, операторы и так далее. В таком случае синтаксиса нет в том смысле, что нет такого синтаксиса, который бы нельзя было изменить средствами самого языка. Грамматика при этом, конечно, никуда не денется.

Опять же, тут есть тонкая грань. Если каждому оператору соответствует какое-либо выражение языка, то все еще можно считать, что в языке все есть выражение. В таком случае, это можно считать легкой косметикой. Например, оператору := в Io соответствует выражение setSlot. Спецформе define в Scheme не соответствует никакое выражение. Соответственно, на Io можно писать используя одни только выражения, на scheme — нет.

Таким образом, к языкам без синтаксиса(или как это лучше назвать) можно отнести те, на которых весь код может быть написан без использования препроцессора, на одних только выражениях.

Наверное, tcl сюда входит, picolisp, возможно смоллток(поправьте, если я ошибаюсь). А еще есть?

UPD точней будет, наверное, не «без синтаксиса», а «независим от синтаксиса»

 , , ,

callbackhell ()

ЯП с минималистичным и единообразным синтаксисом

Подскажите пожалуйста, какие существуют языки программирования с минималистичным и единообразным синтаксисом?

На примете есть только

  • Lisp
  • forth (любые стековые яп)
  • io

 , ,

mag1ck ()

vim syntax highlight: как сделать, чтобы накладывался цвет и bold?

Всем привет.

Делаю подсветку синтаксиса в vim.
GUI (gvim), но не в этом суть, если для терминала решение есть, для gvim'а разберусь как прикрутить.

Тестовый текст:

one two three four

Делаю:
:syn off
:syn on
:syn match two 'two.*' contains=three
:hi two guifg=red

Работает: two three four теперь красное.
Теперь продолжаю:
:syn match three 'three.*'
:hi two gui=bold

Я ожидал, что three four теперь будет крассным bold, а оно просто bold и дефолтного guifg .

Как сделать, чтобы для three bold (явно указанный) не отменял guifg установленного two?

 ,

Kroz ()

Что бывает, когда языку дальше некуда развиваться и он просто перегружается новыми фичами

http://www.opennet.ru/opennews/art.shtml?num=41837

Новый выпуск в основном сосредоточен на корректировке проблемного поведения и исправлении ошибок. Представлен Tk-Cocoa 2.0, новый порт Tk для OS X, совместимый с Mac App Store. Восстановлена поддержка tbcload и tclcompiler. Улучшена реализация асинхронных сокетов. Добавлено новый оператор замены %M, указывающий число шаблонов связывания.

новый оператор замены %M

Что бывает, когда языку дальше некуда развиваться (в плане улучшения производительности) и он просто перегружается новые фичи? В результате держать в уме все возможности синтаксиса становится трудно и начинает появляться быдлокод на ровном месте. Это относится не только к тиклю, но и скорее всего к остальным.

inb4: c++

 , , ,

nagibator ()

ruby tidy

Привет!

Есть ли какие-то реформатеры ruby кода, аналогичные perltidy? Выровнять запятые, расставить пробелы, etc. Ничего путного не гуглится

 , ,

disarmer ()

Подскажите по mcedit syntax

Хочу сделать подсветку заголовков первых уровней markdown в mcedit. Например:

Test
====

Если для теста напишу, что-то типа

context \nT ===+\n yellow
то всё работает отлично. Но как указать любой символ? Как указать не жадный забор? Если пишу, скажем:
context \n ===+\n yellow
то подкрашенным оказывается весь текст целиком.

Или это в mcedit невозможно сделать?

 , ,

KRoN73 ()