text:
Q: How to remove modifiers in a SQL Server stored procedure I have a variable @modifier which returns (::22::) now I want to remove the : after the value 22 i.e it should return (::22). If modifier has a value of (:10:::), it should return (:10).
Is this possible in a SQL Server stored procedure?

A: You could use of reverse() function
select @modifier [modifier],
       REVERSE(SUBSTRING(REVERSE(@modifier ), patindex('%[^:]%', REVERSE(@modifier )), len(@modifier))) [modifiedstring]

EDIT :
SELECT @modifier [modifier],
       CASE
           WHEN PATINDEX('%[0-9]%', @modifier) > 0
           THEN REVERSE(SUBSTRING(REVERSE(@modifier), PATINDEX('%[^:]%', REVERSE(@modifier)), LEN(@modifier)))
           ELSE ''
       END [modifiedstring];

Note : In above first you check the strings have some numeric values present or not by using patindex() function
Result :
modifier     modifiedstring
::22::       ::22
:10:::       :10
::::

A: Try This
DECLARE @V VARCHAR(20) = ':10::'

SELECT
    MyString = @V,
    Result = REVERSE(
    SUBSTRING(REVERSE(@V),
                PATINDEX('%[0-9]%',REVERSE(@v)),
                LEN(@V)))

Result
MyString             Result
-------------------- --------------------
:10::                :10

A: Please try this. We can do this without reverse also.
CREATE TABLE strs1
(
    modifier VARCHAR(100)
)
Go

INSERT INTO strs1 VALUES
('::22::'),
(':10:::')
GO

SELECT modifier,
LEFT(modifier,PATINDEX('%[0-9]%',modifier)+ PATINDEX('%[^0-9]%',SUBSTRING(modifier,PATINDEX('%[0-9]%',modifier),LEN(modifier)))-2)
Modifiedstring
FROM strs1

OUTPUT

/*------------------------

SELECT modifier,
LEFT(modifier,PATINDEX('%[0-9]%',modifier)+ PATINDEX('%[^0-9]%',SUBSTRING(modifier,PATINDEX('%[0-9]%',modifier),LEN(modifier)))-2)
Modifiedstring
FROM strs1
------------------------*/
modifier                      Modifiedstring
----------------------------- -----------------
::22::                        ::22
:10:::                        :10

(2 row(s) affected)


text:
Q: How to fix? Discord.js Bot keeps going offline because of Value error I keep getting this error
TypeError: Cannot read property 'size' of undefined
at Client.client.on.message
(/home/colter/Code/groundskeeper/index.js:38:30)
at emitOne (events.js:116:13)
at Client.emit (events.js:211:7)
at MessageCreateHandler.handle

I have checked for errors and compared it to the sample code. It all looks right to me.
client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot)
return;

const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();

// Here is my syntax for adding commands. So far simple ones, but commands non the less!
if (command === 'ping') {
    message.channel.send('Pong');
}
else if (command === 'beep') {
    message.channel.send('Boop');
}
else if (command === 'server') {
    message.channel.send(`Server name: ${message.guild.name}\nTotal members: ${message.guild.memberCount}`);
}
else if (command === 'user-info') {
    message.channel.send(`Your username: ${message.author.username}\nYour ID: ${message.author.id}`);
}
else if (command === 'args-info') {
    if (!args.length) {
        return message.channel.send(`Your didnt provide any arguments, ${message.author}!`);
    }
    else if (args[0] === 'foo') {
        return message.channel.send('bar');
    }
    message.channel.send(`first argument: ${args[0]}`);
}
else if (command === 'kick') {
    if (!message.mentions.user.size) {
        return message.reply('you need to tag a user in order to kick them');
    }

    const taggedUser = message.mentions.users.first();

    message.channel.send(`You wanted to kick: ${taggedUser}`);
}
});

client.login(token);

the expected output should be you need to tag a user in order to kick them from my bot when I use the ?kick command.

A: On your code:
message.mentions.user.size

Is trying to read the property size of user, that is inside mentions, that is inside message.
If message, mentions and user don't exist, there's no size property to be read, you cannot read a property of something that does not exist.
You can check beforehand if it exists:
if(message.mentions.user) {
    if (!message.mentions.user.size) {
        return message.reply('you need to tag a user in order to kick them');
    }
}

A: On line 38, you have what appears to be a simple typographical error.
user (singular) is not a valid property of MessageMentions. The correct property is users (plural), which you use correctly a few lines later.

A: Perhaps you could use this, if you only need to kick one person at a time.
if(!message.guild) return; // Only runs if in a server
const member = message.mentions.members.first(); // This gets the first guild member, not user.
if (member && message.member.hasPermission('KICK_MEMBERS')) {  // Only tries to kick them if they exist and have permission
  try {
    member.kick(args.slice(1).join(' '); // Gives reason, if any and kicks them.
  } catch (err) {
    console.error(err);
  }
} else {
  message.channel.send(`You tried to kick: ${args[0]}`);
}

A: You should use this for kick command!
client.on("message", (message) => {
  // the cmd  >>        if (message.content.startsWith("{prefix}kick")) {
  //permission set to kick members only >>    if (!message.member.hasPermission(["KICK_MEMBERS"])) return message.channel.send // not enough perms message >("this bot Found An Error! Error: You Do Not Have Kick Members Permission!")
  // >> this is used to define @mentions    const member = message.mentions.members.first()
  if (!member) {
    return message
      .reply
      // A User didnt mention someone so thy get this error>>      (`the bot Found An Error! Error: A User Was Not Mentioned!`)
      ();
  }
  // if the bots role doesnt have their role above the user>>  if (!member.kickable) {
  return message.reply(
    `bot Found An Error! Error: Permission Is Not Above The User, Try Again When This Is Fixed!`
  );

  return (
    member
      // >> sucess kick message    .kick()
      .then(() => message.reply(`bot Kicked ${member.user.tag} Sucessfully!`))
  );
  // error bot message >>     .catch(error => message.reply('Error!  Please Try Again!`))
});

redpajama_set_name: RedPajamaStackExchange


text:
Q: concatenate two columns into one I am using Oracle SQL Developer and am trying to concatenate two columns into one for each row of students.  Under pivot below, I have "1" and "1A" separately but would like to show both into one column.
SELECT
  *
FROM (
    SELECT
      students.student_number   id
     ,students.last_name ||',' ||students.first_name student
     ,students.grade_level      gr
     ,sections.external_expression
     ,teachers.last_name        class
    FROM cc
      JOIN sections ON cc.sectionid   = sections.id
      JOIN courses ON sections.course_number   = courses.course_number
      JOIN teachers ON sections.teacher   = teachers.id
      JOIN students ON cc.studentid   = students.id
    WHERE
      SYSDATE BETWEEN cc.dateenrolled AND cc.dateleft
      AND cc.schoolid         = sections.schoolid
      AND sections.schoolid   = '300'
  )
    PIVOT (
      LISTAGG ( class,'/' ) WITHIN GROUP ( ORDER BY class )
      FOR external_expression
      IN ( '1A(A) 1B(A)' "1",'1A-2A(A)' "1A",'2A(A) 2B(A)' "2"
          ,'1B-2B(A)' "2A",'3A(A) 3B(A)' "3",'4A(A) 4B(A)' "4"
          ,'5A-5B(A)' "5",'5A(A) 7A(A)' "5A",'7A-7B(A)' "7"
          ,'5B(A) 7B(A)' "7A",'8A(A)' "8",'9A(A)' "9",'10A(A)' "10" )
    )
ORDER BY student

A: CONCAT for string concatination.
Note: PIVOT, SYSDATE also isn't a syntax in MySQL
MariaDB-10.3 has an ORACLE MODE which might make your transition easier.


text:
Q: En android Studio, declarar varias Clases desde inicio de aplicación en manifest Requiero tener variables globlales por lo tanto cree la Clase "ClassGlobal" donde tendré mis variables, sin embargo anteriormente se me presento el error MultiDex por lo tanto cree la clase "YourApplication", y mi manifest inicia con esta clase; por lo que veo en guias mi Clase "ClassGlobal" deberia iniciar con la applicacion, ¿como le hago para tener ambas clases desde un inicio?
NOTA: empece a programar desde CERO en Enero2020.

A: En cuanto a la clase "ClassGlobal" donde deseas definir tus variables no podràs extender de Application ya que tienes una clase que extiende de MultidexApplication y esta clase ya extiende de Application.
Una opciòn es definir simplemente tu clase ClassGlobal sin extender de Application:
public class ClassGlobal {

    public static final String PREFS_CONFIG = "Preferences_Config";
    public static final String PREFS_A = "Android_System";
    public static final int CONTADOR = 0;
    ...
    ...

}

Para habilitar el modo multidex lo puedes realizar desde tu archivo build.gradle definiendo  multiDexEnabled true dentro del bloque defaultConfig :
android {

    defaultConfig {
        ...
        ...
        multiDexEnabled true
        ...
        ...
    }

}

A: a ver... en tu pregunta hay que aclarar varios conceptos.... ,
el manifest.xml no sirve para indicar las clases que tendra el proyecto, este archivo sirve para proporcionar determinada informacion sobre tu aplicacion, como por ejemplo los permisos se necesitaran, el hardware, etc.... pero sobretodo este archivo se utiliza para indicar que activitys( y como se lllaman) tiene tu proyecto, no lo confundas con clases.... las activitys en android , son "las ventanas" o "pantallas".
estas activitys se declaran como una clase normal, pero que extienden de superclases estandares como "Appcompat", por lo tanto en el archivo manifest tu le estas indicando que activitys tiene tu proyecto y que activity sera la que se ejecutara al principio cuando arranque tu aplicacion
por lo tanto si tu tienes una clase donde agrupas las variables globales a modo de "indice", es decir , multidex, esto tiene ciertas limitaciones aqui te dejo  el link donde habla sobre el mutidex en android , y las limitaciones....
https://developer.android.com/studio/build/multidex?hl=es


text:
Q: Node JS + Express - валидация пользователя День добрый!
Пытаюсь сделать валидацию пользователя на сервере. Бэк-енд с фронтом ещё не связан, для тестирования сервера использую postman. Я специально раздал разные коды ошибок что бы видеть какое условие не сработало, но сервер возвращает всегда 501, то есть он всегда сваливается в последний else. Если я убираю проверку(строчку) if (userValid === true), то всё нормально. Мне приходит passwordHash. Я не использую плагины для валидации, т.к. я только учусь и хочу разобраться как это работает. На самом деле у меня кончились идеи как это исправить, мне кажется я перепробовал всё на свете)
router.post('/', function (req, res) {
let user = new userModel;
user.username = req.body.username;
let password = req.body.password;

let userValid = () => {
    //нужен сабмит в скобках?
    if (/^[a-zA-Z1-9]+$/.test(req.body.username) === false) {
        return res.sendStatus(400);
    }

    else if (req.body.username.length < 4 || req.body.username.length > 20) {
        return res.sendStatus(401);
    }

    else if (parseInt(req.body.username.substr(0, 1))) {
        return res.sendStatus(402);
    } else {return true}
    //что валидация должна ретурнить если всё ок?
};

if (userValid === true) {
    bcrypt.hash(password, 10, function (err, hash) {
        if (err) {
            console.log(err);
            res.sendStatus(403)
        } else {
            user.password = hash;
            user.save(function (err) {
                if (err) {
                    res.sendStatus(500)
                } else {
                    console.log(config);
                    let token = jwt.sign({username: user.username}, config.secretKey);
                    res.send(token)
                }
            })
        }
    })
} else {
    res.sendStatus(501)
}

});
Разве что есть ещё 1 вариант из доки, но я не понимаю что именно проверяет эта валидация? Что на сервер отправили логин без пробелов или не пустое поле? И что мне делать с false?
 let userValid = document.getElementByName(user.username);
 userValid.addEventListener("submit", function (event) {
     if(!userValid.validity.valid) {
          event.preventDefault();
     }

 }, false);

P\S: Я уверен что есть более простой и короткий способ сделать эту валидацию, что-то вроде "просто добавь атрибут required к полю input", но я не вижу его)


text:
Q: Need modification to existing multiline Perl replacement code

I had a recent question earlier this month which was solved by @jm666 which involved multi line text replacement.
I have an issue in that, although this works perfectly as requested, it results in the removal of some text at the very end of the text file which I need to retain.
The line added to my process file which strips the blocks of text is below:
$contents = join '', grep { !/Layer\s*=\s*7\b/ } split /^(?=CHARTS)/m, $contents;

The data below shows what is being stripped. Each block of text commences with CHARTS and ends with [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
There is then a blank line and we are on to the next block, which again commences with CHARTS.
The line shown at the start of the question correctly strips each entire block (from start to finish) where Layer=7, which is in the 4th line of each block.
The very last block in the file is then followed by some information which formats things. That information commences with STACK. Below the sample code below I show that STACK info.
I have posted a 2 min video which describes the issue in detail
CHARTS
  Position=574,1988,1013,2652,-1,-1
  Color=14671839
  Layer=7
  [0] Font=MS SAN SERIF,10,0,F,F,
  [1] Show=F,F,F,T,T,F,T,F,F,T,
  [2] Scale=F,F,T,F,F,F,F,F,0,T,F,
  [3] Grid=F,F,F,F,1,
  [4] Paint=F,F,F,0,0,0,
  [5] Bars=1,2000,1970,
  [6] Colors=65793,0,0,8388608,32767,65793,0,0,
  [7] Theme=6,0,255,65280,7566080,0,16777215,0,
  [8] Candles=F,F,F,F,1,F,
  [9] Filter=T,F,F,F,F,0,0
  [10] Type=F,F,F,F,15,5083,
  [11] Spacing=5,236,0,10,4,-7,73,
  [12] Range=227.8,107.2,2.05,0.01
  [13] Volume=0,100,0,0,0,0,
  [14] Refresh=0,0,0,
  [15] Feed=5,5,F,
  [16] Template=
  [17] Symbol=@OJ#.W
  [18] SubSizes=0,0,0,0,0,0,0,0,0,0,

  [19]= <<<    Andrews Pitchfork  1   >>>
  [20]=61,5085,0,1,192,0,0,0,0,0,0,0,0,0,0,0,0,
  [21]=16711935,16711935,16711935,255,16711935,255,16711935,16711935,65793,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [22]=2,7,0,0,0,64.58475,226.99976,97.1011,35,2,0,0,25,38.2,50,61.8,75,100,0,0,0,0,0,0,0,0,
  [23]=146,0,0,2,1120518,0,1120127,255,1090220,1,3,3,1,1,4,1,1,3,1,1,1,0,0,0,0,
  [24]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [25]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [26]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [27]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

  [19]= <<<    c:\XXXXX\Alerts\AUD.wav   103.47   672.59   >>>
  [20]=65,5088,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [21]=65280,65280,8421376,0,255,255,16711680,16711680,65280,16744447,32767,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [22]=0,0,0,0,2730.6001,103.47184,672.59155,103.47184,5,0,0,0,0,0,0,1,0,0.1,0,0,0,0,0,0,0,0,
  [23]=3,0,0,0,1120914,0,1170120,255,1120914,1,5,5,1,0,1,1,1,1,1,1,1,0,0,0,0,
  [24]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,99,58,92,69,110,115,105,103,110,49,
  [25]=48,92,65,108,101,114,116,115,92,65,85,68,46,119,97,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [26]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [27]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

  [19]= <<<    Line     t   160.65   729.77   >>>
  [20]=65,5089,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [21]=16711935,16711680,8421376,0,255,255,16711680,16711680,65280,16744447,32767,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [22]=0,0,0,0,2892.6001,160.65494,729.77466,160.65494,5,0,0,0,0,0,0,1,0,0.1,0,0,0,0,0,0,0,0,
  [23]=1,0,0,0,1151023,0,1170120,255,1151023,1,2,2,1,0,1,1,1,1,1,1,1,0,0,0,0,
  [24]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [25]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [26]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [27]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

CHARTS
  Position=-462,3460,-23,4124,-1,-1
  Color=14671839
  Layer=1
  [0] Font=MS SAN SERIF,10,0,F,F,
  [1] Show=F,F,F,T,T,F,T,F,F,T,
  [2] Scale=F,F,T,F,F,F,F,F,0,T,F,
  [3] Grid=F,F,F,F,1,
  [4] Paint=F,F,F,0,0,0,
  [5] Bars=1,2000,1970,
  [6] Colors=65793,0,0,8388608,32767,65793,0,0,
  [7] Theme=6,0,255,65280,7566080,0,16777215,0,
  [8] Candles=F,F,F,F,1,F,
  [9] Filter=T,F,F,F,F,0,0
  [10] Type=F,F,F,F,15,43286,
  [11] Spacing=5,183,0,10,4,-7,73,
  [12] Range=148.5,89.1,0.01,0.01
  [13] Volume=0,100,0,0,0,0,
  [14] Refresh=0,0,0,
  [15] Feed=5,2,F,
  [16] Template=
  [17] Symbol=SVXY.D
  [18] SubSizes=0,0,0,0,0,0,0,0,0,0,

  [19]= <<<    Circle   >>>
  [20]=62,43296,0,0,576,0,0,0,0,0,0,0,0,0,0,0,0,
  [21]=13959167,16711680,65280,255,255,5242880,16744192,12900,255,5242880,16727871,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [22]=2,7,0,0,-0.28571,134.64,135.71358,134.62071,15,0,0,0,25,38.2,50,61.8,75,100,150,161.8,200,0,0,0,0,0,
  [23]=130,2,0,2,1170222,1,1170222,1,1170215,0,2,0,1,1,1,1,1,3,1,1,1,0,0,0,0,
  [24]=176,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,25,0,117,4,119,0,216,250,25,
  [25]=0,64,202,15,5,4,182,73,0,168,233,105,179,2,0,0,0,117,4,119,0,176,120,64,0,64,202,15,5,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [26]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [27]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

  [19]= <<<    Circle   >>>
  [20]=62,43297,0,0,576,0,0,0,0,0,0,0,0,0,0,0,0,
  [21]=13959167,16711680,65280,255,255,5242880,16744192,12900,255,5242880,16727871,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [22]=2,7,1.85714,-0.14286,1.57143,145.22144,146.31429,145.22144,15,0,0,0,25,38.2,50,61.8,75,100,150,161.8,200,0,0,0,0,0,
  [23]=130,2,0,2,1170323,1,1170323,1,1170321,0,2,0,1,1,1,1,1,3,1,1,1,0,0,0,0,
  [24]=176,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,25,0,117,4,119,0,216,250,25,
  [25]=0,64,202,15,5,4,182,73,0,168,233,105,179,2,0,0,0,117,4,119,0,176,120,64,0,64,202,15,5,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [26]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [27]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

  [19]= <<<    Circle   >>>
  [20]=62,44362,0,0,576,0,0,0,0,0,0,0,0,0,0,0,0,
  [21]=13959167,16711680,65280,255,255,5242880,16744192,12900,255,5242880,16727871,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [22]=2,7,0.09091,0,0.09091,63.96,63.93712,63.93712,15,0,0,0,25,38.2,50,61.8,75,100,150,161.8,200,0,0,0,0,0,
  [23]=130,2,0,2,1161108,1,1161108,1,1161104,0,2,0,1,1,1,1,1,3,1,1,1,0,0,0,0,
  [24]=176,0,0,0,0,0,0,0,0,0,0,177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,25,0,123,2,159,3,216,250,25,
  [25]=0,64,202,15,5,4,182,73,0,168,233,105,179,2,0,0,0,123,2,159,3,176,120,64,0,64,202,15,5,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [26]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [27]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

So, here below is the problem area. The first two lines below are the final two lines of the last block of CHARTS data in the file. As you can see, it is then followed by many smaller blocks which commence with STACK.
This question is simply looking for a modification to the line of code at the start of the question, replicated once more below, to not strip out the STACK blocks. Using the current solution it does remove all the Layer=7 blocks but it also removes all of the STACK blocks at the end of the file. This is despite the final block of text prior to the STACK blocks being Layer=1, not Layer=7.
$contents = join '', grep { !/Layer\s*=\s*7\b/ } split /^(?=CHARTS)/m, $contents;

[27]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
      [28]=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
STACK
  Position=399,390,888,1211,0,1048
  Color=-16777201
  Layer=6
  ID=56729,56730,56731,56732,56733,56734,56735,
  [1] Name=
  [2] Index=1,
  [3] Pinned=F,
  [4] Font=8,-16777208,F,MS SANS SERIF
  Window=Minimized

STACK
  Position=399,684,888,1348,0,1048
  Color=-16777201
  Layer=1
  ID=28487,9939,
  [1] Name=
  [2] Index=0,
  [3] Pinned=F,
  [4] Font=8,-16777208,F,MS SANS SERIF
  Window=Minimized

STACK

A: Provided STACK blocks does only occur at the end of the file, you can try to also split out the STACK blocks:
$contents = join '', grep { /^STACK/ || !/Layer\s*=\s*7\b/ } split /^(?=CHARTS|STACK)/m, $contents;


text:
Q: Inductance of a coil when the core has a gap
A coil of $N$ turns is wound on an iron core occupying a length $l$ of the core that has an air gap as shown in the figure.
Mean length of iron in the core is $l_i$ and the length of the air gap is $l_g$ ($l_g << l_i$
). Denoting relative permeability of the
iron by $\mu_r$ and that of the free space by $\mu_0$, deduce the suitable expression for the self-inductance of the coil

I am not able to understand why the inductance of the coil would depend on the gap or the rest of the core at all, since there is a gap and hence no loop will be completed, leading to any significant eddy currents.
TL;DR I just want to know how the self-inductance $L$ of the coil would depend on the rest of the core and especially the length of the gap

A: Simplified, and wrong but very intuitive way to look at it, is to imagine that magnetic field is a current, that passes through resistors.
This current passes through steel core easily, resistance is about 10 000 times less than that of air.
In this model because air resistance is so much higher, even small air gap can easily make total circuit resistance much bigger. So we can say that air resistance dominates. And thats why we can take just it into account.
This resistance in our thought experiment has a proper name
https://en.m.wikipedia.org/wiki/Permeability_(electromagnetism)
Through it you can calculate how much effect on a circuit will be from the air gap and from the magnetic core, for other materials and shapes too.

A: The problem has nothing to do with eddy currents. It is simply that the magnetic field inside the coil is considerably reduced by the presence of the air gap. More precisely, the reluctance $R$ of the magnetic circuit is greater and the magnetic flux $Φ=Ni/R$ is lower.
You just have to express the reluctance of the magnetic circuit and write that $L=NΦ/i=N^2/R$.


text:
Q: Chern Character Isomorphism for non-finite CW complexes, resp. for non-CW complexes This is a question I asked at Math.SE but got no answers: https://math.stackexchange.com/q/397164/7110/
Atiyah and Hirzebruch showed in their paper "Vector bundles and homogeneous spaces" that $\mathrm{K}^\ast(X) \otimes \mathbb{Q} \cong \mathrm{H}^\ast(X; \mathbb{Q})$, where $\mathrm{H}^\ast$ denotes singular cohomology, if $X$ is a finite CW complex.
Somewhere on the Internet I saw the statement $\mathrm{K}^\ast(X) \otimes \mathbb{Q} \cong \check{\mathrm{H}} {}^\ast(X; \mathbb{Q})$, where $\check{\mathrm{H}} {}^\ast$ denotes Cech cohomology, if $X$ is a compact Hausdorff space.

First, I'm looking for a reference for this fact $\mathrm{K}^\ast(X) \otimes \mathbb{Q} \cong \check{\mathrm{H}} {}^\ast(X; \mathbb{Q})$.
Second, can the statements be extended to non-compact spaces, i.e., do we have something like $\mathrm{K}^\ast_{\text{cpt}}(X) \otimes \mathbb{Q} \cong \mathrm{H}_{\text{cpt}}^\ast(X; \mathbb{Q})$ for (locally finite) CW complexes? Or something analogous for the Cech cohomology and locally compact Hausdorff spaces?

A: I have found a reference:

"M. Karoubi, Les isomorphismes de Chern et de Thom-Gysin en K-theorie, Seminaire Henri Cartan, vol. 16, no. 2, Expose no. 16, 1963-1964".

There the isomorphism $\mathrm{K}^0(X) \otimes \mathbb{Q} \cong \mathrm{\check{H}}^{ev}(X; \mathbb{Q})$ is shown for every compact Hausdorff space $X$. But the Theorem 2 from there should also be applicable to $\mathrm{K}^\ast(X) \otimes \mathbb{Q}$ and $\check{\mathrm{H}}^\ast(X; \mathbb{Q})$.
For locally compact Hausdorff spaces $X$ one can indeed just consider the one-point compactification $X^+$ and apply the above isomorphism to the pair $(X^+, \infty)$.


text:
Q: Configure nautilus icon for new mime type How does nautilus find the icon for a given mimetype? I have just registered a new mimetype for Umlet on my system.
Additionally I added an icon with using:
xdg-icon-resource install --novendor --context mimetypes \
                          --size 64 umlet_logo.png umlet

Then I added Icon= to the .desktop file, which I registered for my mime type. Now nautilus shows the icon in the context menu together with the name of the default application for that mime type.
However the icon of the file itself still shows some generic text-type icon like for normal text files. I would like to change the icon type of my application to this new mime-type.
I found some guides, but they assume I have a svg file and ask me to copy the .svg into some /usr/share/icons/gnome/scalable followed by calling gtk-update-icon-cache, I am wondering if there is another solution that:
a) Does not require an svg, but works with png files
 b) Does not require that I write into /usr


text:
Q: EditText.getText Java.lang nullpointer exception I'm having a problem with my android program.
I have about every thing working what i want, but now im trying to add a password dialog.
I want to show  a Dialog with a EditText(enter password) and two buttons (ok, cancel).
(working fine till so far)
When clicking on the OK button the password should be saved in mij SendData Class.
But every time I try to get the content of the EditText it gives a Java.lang NullPointerException.
Can some one help me please?
(I don't have a stack trace as i don't know where to find it :(  because i'm testing on android emulator.)
If there any thing else you need, please feel free to ask.
Here is the XML-FILE
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <requestFocus />

    <EditText
        android:id="@+id/txt_wachtwoord"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:inputType="textPassword" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/DialogOK"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/txt_wachtwoord"
        android:layout_below="@+id/txt_wachtwoord"
        android:layout_marginTop="22dp"
        android:text="OK" />

    <Button
        android:id="@+id/Cancel"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/DialogOK"
        android:layout_alignBottom="@+id/DialogOK"
        android:layout_toRightOf="@+id/DialogOK"
        android:text="Cancel" />

</RelativeLayout>

Here is the code:
    package SebApp.Phone.Remote;

    import java.net.DatagramSocket;

    import android.app.Activity;
    import android.app.Dialog;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.EditText;
    import android.widget.Toast;
    import android.os.Vibrator;
    import android.app.AlertDialog;
    import android.content.DialogInterface;

    public class PhoneRemote extends Activity {

    private static final int VIBRATE_TIME = 100;

    /** Called when the activity is first created. */
    public Vibrator vibrator = null;
    public sendData sd = new sendData();

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE);

        //button to call the Dialog
        Button ww = (Button) findViewById(R.id.ww);

        //listener password button
        ww.setOnClickListener(wwOnClickListener);

    }

    Button.OnClickListener wwOnClickListener = new Button.OnClickListener() {

        public void onClick(View v) {
            try{
                final EditText ww = (EditText) findViewById(R.id.txt_wachtwoord);
                //set up dialog
                Dialog dialog = new Dialog(PhoneRemote.this);
                dialog.setContentView(R.layout.wachtwoord);
                dialog.setTitle("This is my custom dialog box");
                dialog.setCancelable(true);
                //there are a lot of settings, for dialog, cheout!

                //set up button
                Button button = (Button) dialog.findViewById(R.id.DialogOK);
                button.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {
                        try{
                            Toast.makeText(v.getContext(),"PWfield contains: " + ww.getText().toString(), Toast.LENGTH_SHORT).show();
                            //finish();
                        }catch(Exception e)
                        {
                            Toast.makeText(v.getContext(),e.toString(), Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                dialog.show();
            }catch(Exception E){
                Toast.makeText(v.getContext(),E.toString(), Toast.LENGTH_SHORT).show();
            }

        }
    };
}

A:  Button.OnClickListener wwOnClickListener = new Button.OnClickListener() {

        public void onClick(View v) {
            try{
                final EditText ww = (EditText) findViewById(R.id.txt_wachtwoord);
                //set up dialog
                Dialog dialog = new Dialog(PhoneRemote.this);
                dialog.setContentView(R.layout.wachtwoord);
                dialog.setTitle("This is my custom dialog box");
                dialog.setCancelable(true);
....

instead use
Button.OnClickListener wwOnClickListener = new Button.OnClickListener() {

        public void onClick(View v) {
            try{

                Dialog dialog = new Dialog(PhoneRemote.this);
                dialog.setContentView(R.layout.wachtwoord);
                final EditText ww = (EditText) dialog.findViewById(R.id.txt_wachtwoord);
                //set up dialog
                dialog.setTitle("This is my custom dialog box");
                dialog.setCancelable(true);
....

you had declared EditText before setting the dialog view

A: I have yet to run your code. However, I would say the variable wwOnClickListener is being initialized before the onCreate method.
Therefore the layout is not set, as the layout is set within the onCreate method. To fix this I would pull out the following
final EditText ww = (EditText) findViewById(R.id.txt_wachtwoord);

From the buttonlistener and make ww a global variable which is initialized in the onCreate method.
I would expect that will resolve the issue.


text:
Q: How do I validate a JWT that's sent as an HttpOnly cookie in FastAPI? Problem
I'm working on a FastAPI application that requires authentication for certain endpoints to be reached by users. I'm using Oauth2 and Jose from FastAPI to create JWTs for my authentication process. After doing some research, it seems that the best way to ensure tokens are protected on the frontend is to store them in HttpOnly Cookies. I am struggling to understand how to CORRECTLY pass the JWT through HttpOnly Cookies so that my FastAPI server is able to validate the JWT in my headers. Currently, when I try to pass the JWT token as an HttpOnly Cookie, I get a 401 Unauthorized Error.
What I've Tried
I have been able to successfully authenticate the user with the JWT token when I code the token into the headers as a template string. However, when I pass the JWT to the FastAPI server through the headers as a Cookie, my FastAPI server is unable to authenticate the user and returns a 401 unauthorized error. I've tried looking into the network tab to see what headers are being sent in my requests to the FastApi server in order to better understand what is different between the two scenarios.
Successful example with code
This is in the header when I pass the JWT as a template string and get a 200 response:

Authentication: Bearer token

  async function getPosts() {
    const url = "http://localhost:8000/posts";
    const fetchConfig = {
      headers: {
        Authorization: `Bearer ${tokenValue}`,
      },
    };
    const response = await fetch(url, fetchConfig);
    const posts = await response.json();
  }

Unsuccessful example with code
This is in the header when I pass the JWT as an HttpOnly Cookie and get a 401 response:

Cookie: access_token="Bearer token"

I've also tried changing the way I set my cookie on the server so that the header looks like this:

Cookie: Authentication="Bearer token"

  async function getPosts() {
    const url = "http://localhost:8000/posts";
    const fetchConfig = {
      credentials: "include",
    };
    const response = await fetch(url, fetchConfig);
    const posts = await response.json();
    console.log(posts);
  }

FastAPI Code
Here is the code for my Oauth2 token validation that protects my API endpoints. This is based off of the example in the FastAPI docs:
FastApi Oauth2
oauth2_scheme = OAuth2PasswordBearer(tokenUrl='login')

SECRET_KEY = settings.SECRET_KEY
ALGORITHM = settings.ALGORITHM
ACCESS_TOKEN_EXPIRE_MINUTES = settings.ACCESS_TOKEN_EXPIRE_MINUTES

def verify_access_token(token: str, credentials_exception):
  try:
    payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
    id: str = payload.get("user_id")
    if id is None:
      raise credentials_exception
    token_data = schemas.TokenData(id=id)

  except JWTError:
    raise credentials_exception

  return token_data

def get_current_user(token: str = Depends(oauth2_scheme), db: Session = Depends(database.get_db)):
  credentials_exception = HTTPException(
    status_code=status.HTTP_401_UNAUTHORIZED,
    detail=f"Could not validate credentials",
    headers={"WWW-Authenticate": "Bearer"}
  )

  token = verify_access_token(token, credentials_exception)
  user = db.query(models.User).filter(models.User.id == token.id).first()

  return user

Here is an example of a protected endpoint that depends on the get_current_user function from the oauth2 file listed above.
@router.get("/", response_model=List[schemas.PostOut])
def get_posts(db: Session = Depends(get_db), current_user: int = Depends(oauth2.get_current_user):
  return {"Message": "Protected Endpoint Reached"}

It seems like I'm running into the issue because my get_current_user function in the Oauth2 is only able to grab the JWT from the header when it is in the following format:

Authentication: Bearer token

It doesn't seem to be able to authenticate the token from the header when it is in either of the following formats:

Cookie: access_token="Bearer token"

Cookie: Authentication="Bearer token"

Do I need to somehow change the way I'm sending the headers when I send them via HttpOnly Cookies or do I maybe need to change something about my get_current_user function that will enable it to read the cookie headers correctly.
Any suggestions are greatly appreciated, and thank you for taking the time to read this!

A: To get the token from a cookie instead of the Authorization header which is default for OAuth2PasswordBearer, tell FastAPI that you want the token to originate from a cookie instead.
def get_current_user(access_token: str = Cookie(...), db: Session = Depends(database.get_db)):

This assume that the token has been named access_token (and not just token). Adjust the name as necessary.


text:
Q: Whatsapi PHP Internal server error I'm trying to use Whatsapi for PHP but it's not working while I call the loginWithPassword function.
My code:
<?php
require_once __DIR__.'/src/whatsprot.class.php';
require_once __DIR__.'/src/events/MyEvents.php';

$username = 'Number';
$password = 'Password';
$nickname = 'Nick';
$target = "targetNumber";
$debug = true;

$w = new WhatsProt($username, $nickname, $debug);
$events = new MyEvents($w);
$events->setEventsToListenFor($events->activeEvents);

$w->connect();
$w->loginWithPassword($password);
$w->sendMessage($target, 'Guess the number :)');
$w->sendMessage($target, 'Sent from RopajiBotServices at '.date('H:i'));
?>

This is the message I receive:

Internal Server Error
The server encountered an internal error or misconfiguration and was
  unable to complete your request.
Please contact the server administrator,
  webmaster@basededatostoons.com and inform them of the time the error
  occurred, and anything you might have done that may have caused the
  error.
More information about this error may be available in the server error
  log.
Additionally, a 404 Not Found error was encountered while trying to
  use an ErrorDocument to handle the request.

Thanks


text:
Q: XML Schema to enforce 0 or 1 default values I am trying to implement an XML Schema which will enforce the following the XML ;
<databases>
    <database>
        <name>"Test A"</name>
        <host>"192.168.0.100"</host>
        <default>yes</default>
    </database>
    <database>
        <name>"Test B"</name>
        <host>"192.168.0.200"</host>
        <default>no</default>
    </database>
    <database>
        <name>"Test C"</name>
        <host>"localhost"</host>
        <default>no</default>
    </database>
</databases>

I am able to implement the XML Schema myself except for one crucial issue; and that is that a maximum of only one database should be marked as the default. This means that zero databases could be marked as the default and this should also be considered valid.
As an example, the following XML should be considered invalid by the XML Schema, since more than one database is marked as default.
<databases>
    <database>
        <name>"Test A"</name>
        <host>"192.168.0.100"</host>
        <default>yes</default>
    </database>
    <database>
        <name>"Test B"</name>
        <host>"192.168.0.200"</host>
        <default>no</default>
    </database>
    <database>
        <name>"Test C"</name>
        <host>"localhost"</host>
        <default>yes</default>
    </database>

Whereas the following XML should be considered valid by the XML Schema since no (zero) databases are marked as default ;
<databases>
    <database>
        <name>"Test A"</name>
        <host>"192.168.0.100"</host>
        <default>no</default>
    </database>
    <database>
        <name>"Test B"</name>
        <host>"192.168.0.200"</host>
        <default>no</default>
    </database>
    <database>
        <name>"Test C"</name>
        <host>"localhost"</host>
        <default>no</default>
    </database>

Does anyone know if it is possible to enforce such a constraint with XML Schemas? I feel as though it should be, but I'm not sure how to go about implementing it.
Any assistance with respect to this matter would be immensely appreciated.
Thanks in advance.

A: The easiest way to check that only one database is marked as the default is probably to structure your XML differently:  record the databases as above, but drop the default element, and add an attribute or child element to the databases element which identifies the default database.  Your XML becomes:
<databases default="Test A">
    <database>
        <name>Test A</name>
        <host>"192.168.0.100"</host>
   </database>
    <database>
        <name>Test B</name>
        <host>"192.168.0.200"</host>
   </database>
    <database>
        <name>Test C</name>
        <host>"localhost"</host>
   </database>
</databases>

(I have dropped the quotation marks in the name elements, on the theory that they are not actually part of the database name.  If they are part of the name, then the default attribute will need to be something like default='"Test A"', including the quotes.)
You will need to ensure that the database/name element is unique; do this with an xs:key construct in the declaration of the databases element.  You will also need to ensure that the optional default attribute points at a database name; do this with xs:keyref.  The declaration of databases might look something like this:
<xs:element name="databases" type="databases">
  <xs:key name="dbname">
    <xs:selector xpath="database"/>
    <xs:field xpath="name"/>
  </xs:key>
  <xs:keyref refer="dbname" name="defaultdb">
    <xs:selector xpath="."/>
    <xs:field xpath="@default"/>
  </xs:keyref>
</xs:element>

A second approach makes a slightly devious use of xs:unique, but again requires refactoring your XML.  Instead of making the third child of database be default with values yes or no, make the third child be either an element named default-database or an element named non-default-database (change the names to suit your preferences, of course).  Define these in such a way as to ensure that every instance of default-database has the same simple-type value.
Then specify that no two occurrences of default-database may have the same string value, using xs:unique:
<xs:unique name="dbname">
  <xs:selector xpath="database"/>
  <xs:field xpath="default-database"/>
</xs:unique>

Since every instance of default-database has the same value, this uniqueness constraint ensures that there can only ever be one such element.  The schema as a whole might look something like this.  First the bookkeeping:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified">

Now the element declaration for databases:
  <xs:element name="databases" type="databases">
    <xs:unique name="dbname">
      <xs:selector xpath="database"/>
      <xs:field xpath="default-database"/>
    </xs:unique>
  </xs:element>

And its complex type:
  <xs:complexType name="databases">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="database"/>
    </xs:sequence>
    <xs:attribute name="default" type="xs:string" use="optional"/>
  </xs:complexType>

Now some more bookkeeping:  declaration for database, just to keep us honest.
  <xs:element name="database" type="database"/>

  <xs:complexType name="database">
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="host" type="xs:string"/>
      <xs:choice>
        <xs:element name="default-database" type="empty"/>
        <xs:element name="non-default-database" type="empty"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

And a final bit of bookkeeping:  a type that ensures that every instance of default-database has the same value.  (There are other ways to achieve this, of course; this is just the one that came to mind first.)
  <xs:simpleType name="empty">
    <xs:restriction base="xs:string">
      <xs:enumeration value=""/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>

If you are absolutely married to your existing design, then I don't know how to do what you want to do in XSD 1.0; if you can use XSD 1.1, of course, you can add an assertion on databases that says
<xs:assert test="count(database[default = 'yes']) = 1"/>

But as the alternative solutions above illustrate, that design and the use of assertions is not your only option.


text:
Q: Meijer G-function in Python and scipy I'm in need of a Meijer G function in scipy. I read somewhere on the internet that due to its generality, the Meier G function is not supported as a special function in scipy, but everyone should write something up according to his personal use case.
My problem is that I have no experience whatsoever with complex integration. As LaTeX is forbidden here, here's what I'm trying to solve numerically:

(the first line being the general case, the second line my case that I'm trying to compute), with p(a), k, k2 given
As wikipedia states, there are three ways to get L:

*

*L runs from −i∞ to +i∞ such that all poles of Γ(bj − s), j = 1, 2, ..., m, are on the right of the path, while all poles of Γ(1 − ak + s), k = 1, 2, ..., n, are on the left.

*L is a loop beginning and ending at +∞, encircling all poles of Γ(bj − s), j = 1, 2, ..., m, exactly once in the negative direction, but not encircling any pole of Γ(1 − ak + s), k = 1, 2, ..., n.

*L is a loop beginning and ending at −∞ and encircling all poles of Γ(1 − ak + s), k = 1, 2, ..., n, exactly once in the positive direction, but not encircling any pole of Γ(bj − s), j = 1, 2, ..., m.

How do I get L and solve the integral? The way I'm used to compute integrals over the reals is to
import numpy as np
myL = np.linspace(0, 1, 100)
densityL = myL[1] - myL[0]
myIntegral = (F(myL)*densityL).sum()

I'm not too much after efficiency, I'd prefer a simple and slow working example that I can use to understand the methodology.

A: For something as complicated, I really think you should avoid calculating the integral yourself, especially if you don't have experience with complex integration, and use a well tested existing implementation.
Meijer G-function is implemented in mpmath and possibly in Sympy.

A: import sympy
print(sympy.functions.special.hyper.meijerg([[], [-1/(k-1)], [0, 0], []], -p/k2).evalf())
import mpmath
print(mpmath.meijerg([[], [-1/(k-1)], [0, 0], []], -p/k2))


text:
Q: php - joomla: strange syntax error occurs only in localhost On the server (PHP 5.6.38) I have a website in Joomla which works fine, I tried to move it to localhost (Uniserverz XIII - PHP 5.6.30) to test some updates but I get an error when I set $error_reporting = 'development':

Parse error: syntax error, unexpected '}' in C:\UniServerZ\www\site_name\templates\site_temp\html\modules.php on line 64

Here is the code:
function modChrome_myCatMod($module, &$params, &$attribs)
{
    $moduleTag      = $params->get('module_tag', 'div');
    $headerTag      = htmlspecialchars($params->get('header_tag', 'h3'));
    $bootstrapSize  = (int) $params->get('bootstrap_size', 0);
    $moduleClass    = $bootstrapSize != 0 ? ' span' . $bootstrapSize : '';

    // Temporarily store header class in variable
    $headerClass    = $params->get('header_class');
    $headerClass    = ($headerClass) ? ' class="' . htmlspecialchars($headerClass) . '"' : '';

    if (!empty ($module->content)) : ?>
        <<?php echo $moduleTag; ?> class="moduletable<?php echo htmlspecialchars($params->get('moduleclass_sfx')) . $moduleClass; ?>" id="Mod<?php echo $module->id;?>">
            <?php if ((bool) $module->showtitle) : ?>
                <?php $com_content_categories = $params->get('com_content_categories'); if(!empty($com_content_categories)):
                    $caturl = ContentHelperRoute::getCategoryRoute ( $com_content_categories[0] );
                ?>
                <<?php echo $headerTag . $headerClass . '>' ?><a href="<?php echo $caturl;?>"><?php  echo $module->title; ?></<?php echo $headerTag; ?>>
                <?php else : ?>
                <<?php echo $headerTag . $headerClass . '>' . $module->title; ?></<?php echo $headerTag; ?>>
                <? endif;?>

            <?php endif; ?><?php echo $module->content; ?>
        </<?php echo $moduleTag; ?>>
    <?php endif;
}     //////////////////////////////////error line

A: Set short_open_tag=On
in your php.ini
and restart your Apache server


text:
Q: código de salida 3221225477: el programa se rompe creé un juego como proyecto final de una materia y está bastante avanzado. Es una imitación del Dinochrome: un gatito que tiene que esquivar obstáculos y le agregué un premio que le suma puntos cuando los junta.
Para controlar el flujo de ambas cosas hice un vector dinámico de su clase base, ObjetosSinTextura. El problema es que el programa se rompe si al principio de la partida se genera un  objeto de la clase Obstáculo y el gatito colisiona con él. Si colisiona con un objeto de la clase Prmeio no se rompe.
Sé el problema está relacionado con el vector dinámico, pero no se exactamente en donde.
Les dejo el fragmento de código del proyecto donde se genera el problema:
bool estaafuera(ObjetoSinTex *obj){ // si la coordenada x es menor a la del final de la pantalla retorna true.
    return obj->posicion().x==-10;
}

void Match::Update ( Game &gamee ) {
    if(Keyboard::isKeyPressed(Keyboard::Key::Escape)){ // para volver a Menu
        gamee.SetScene(new Menu());
    }

    /// updates
    player.Update();

    for(int i = 0; i<objetos.size(); i++) {
        objetos[i]->Update();
        if( player.colisionaCon(objetos[i]) && objetos[i]->esPremio()){ // colision player-obstaculos
            puntaje += 10;
            delete objetos[i];
            objetos.erase(objetos.begin() + i); // si agarra un premio -el clip- le suma 10 ptos

        }else if(player.colisionaCon(objetos[i]) && !objetos[i]->esPremio() ){
            gamee.SetScene(new GameOver(puntaje)); // si no, pierde
        }
    }

    Time time_objetos = tiempoenemigos.getElapsedTime();
    float secsPassed  = time_objetos.asSeconds();

    if(secsPassed >= distan) { // condicional para q los objetos se generen a cierta distancia

        ObjetoSinTex *aux_obj ;

        int elige = rand() % 2;  // para crear premio u obstaculo

        if(elige == 1){ // premio
            premio_texture = new sf::Texture;
            premio_texture->loadFromFile("clip.png");
            aux_obj = new Premio(premio_texture,speed);
            aux_obj->AsignarPos(min_y,max_y);
            objetos.push_back(aux_obj);

        } else { // obstaculo
            string file_elegido = elegirText(); // para variar la textura de enemigo
            enemy_texture = new sf::Texture;
            enemy_texture->loadFromFile(file_elegido);
            aux_obj = new Obstaculo(enemy_texture,speed);
            aux_obj->AsignarPos(min_y,max_y);
            objetos.push_back(aux_obj);
        }

        speed = speed-0.2; // la velocidad aumenta gradualmente.

        int valordistan = rand()%3;
        if(valordistan == 1){
            distan=distan-0.02; // se genera mas cerca
        } else {
            if(valordistan == 2){
                distan = distan + 0.10; // se genera mas lejos
            } else {
                distan = distan-0.15; // se genera mucho mas cerca
            }
        }
        tiempoenemigos.restart();
    }

    auto it = remove_if(objetos.begin(),objetos.end(),estaafuera);
    objetos.erase(it,objetos.end());
    scoreToStr = to_string(puntaje);
}

Match::~Match(){
    cout <<"libera la memoria de la partida" << endl;
    for (auto &o :objetos)
    {
        delete o;
    }
    delete premio_texture;
    delete enemy_texture;
}

A: Objetos sin procesar
for(int i = 0; i<objetos.size(); i++) { // <<--- 2
    objetos[i]->Update();
    if( player.colisionaCon(objetos[i]) && objetos[i]->esPremio()){ // colision player-obstaculos
        puntaje += 10;
        delete objetos[i];
        objetos.erase(objetos.begin() + i); // <<--- 1

    }else if(player.colisionaCon(objetos[i]) && !objetos[i]->esPremio() ){
        gamee.SetScene(new GameOver(puntaje)); // si no, pierde
    }
}

*

*Eliminas un objeto del array

*Te saltas un objeto de la lista

Sí, así es. Cuando eliminas el objeto de la posición i desplazas todos los demás una posición hacia adelante, así el objeto que estaba en i+1 pasa es tar en i, pero como en el bucle incrementas incondicionalmente el valor de i, puesss mala suerte para ese objeto
Si sigues usando índices puedes decrementar i:
delete objetos[i];
objetos.erase(objetos.begin() + i);
i--;

O bien puedes recorrer el array a la inversa. De esta forma al borrar un objeto se desplazarán objetos que ya han sido procesados por el array
for( int i=objetos.size()-1; i>=0; i--) {

También puedes pasar a usar iteradores. Más limpio en estos casos:
for( auto it = objetos.begin(); it != objetos.end(); /* No hacemos nada en este caso */)
{
    auto* objeto = *it;
    objeto->Update();

    if( player.colisionaCon(objeto) && objeto->esPremio()){
        puntaje += 10;
        delete objeto;
        it = objetos.erase(it);
    } else if (player.colisionaCon(objeto) && !objeto->esPremio() ){
        gamee.SetScene(new GameOver(puntaje));
        // Si es GameOver, quizás se debería abandonar el bucle
    } else {
        ++it
    }
}

No reutilizas texturas
Para cada objeto premio creas una textura, cuando todos los premios comparten la misma textura:
        premio_texture = new sf::Texture;
        premio_texture->loadFromFile("clip.png");
        aux_obj = new Premio(premio_texture,speed);
        aux_obj->AsignarPos(min_y,max_y);
        objetos.push_back(aux_obj);

La tarjeta gráfica tiene un límite de texturas ... y no has puesto cómo funcionan los destructores de los objetos Premio y Obstaculo. Si no borras las texturas correctamente corres el riesgo de llenar la tarjeta gráfica con texturas y entonces dejará de aceptar texturas nuevas. Con los obstáculos te pasa exactamente lo mismo (aunque sean diferentes, llegará un momento en el que se repitan).
Quizás sea buena idea precargar las texturas (una única vez cada una) y símplemente le vas a asignando a cada objeto la textura que le corresponda. Este mecanismo, aparte de ser más óptimo, simplifica la gestión de las texturas.
No destruyes objetos
Esta es una buena forma de llenar la memoria de basura: No destruir los objetos cuando ya no los necesitas:
auto it = remove_if(objetos.begin(),objetos.end(),estaafuera);
objetos.erase(it,objetos.end());

Lo que haces en estas dos líneas es, simplemente, sacar del array los objetos que ya no son visibles ... pero no los destruyes, por lo que siguen ocupando memoria (y ya hilando con el tema anterior, su propia copia de la textura).
El parche en este caso es trivial:
auto it = remove_if(objetos.begin(),objetos.end(),estaafuera);

// Forma 1
for( auto it2 = it; it2!=objetos.end(); ++it2)
    delete *it2;

// Forma 2 - reemplaza TIPO_BASE por el tipo usado al declarar la lista objetos -> std::vector<TIPO_BASE>
std::for_each(it, objetos.end(), std::default_delete<TIPO_BASE>());

objetos.erase(it,objetos.end());

Posible borrado doble de texturas
Match::~Match(){
    cout <<"libera la memoria de la partida" << endl;
    for (auto &o :objetos)
    {
        delete o;          // <<--- 3
    }
    delete premio_texture; // <<--- 1
    delete enemy_texture;  // <<--- 2
}

Si resulta que has programado correctamente el destructor de Premio y Obstaculo, entonces en (3) estarás liberando todas las texturas ... sin embargo luego llegan las líneas (1) y (2) y tratas de liberar otra vez las dos últimas texturas ... esto normalmente se conoce como double delete y no es un efecto divertido.
Los punteros premio_texture y enemy_texture deberían ser locales en la función Match::Update ya que o bien las texturas las tienes precargadas o bien dependen de cada objeto:

*

*Si las tienes precargadas, se deberán borrar todas al acabar el juego, no solo las dos últimas

*Si cada objeto tiene su propia textura, entonces es responsabilidad de cada objeto destruir la textura asociada.

El código podría quedar así:
    if(elige == 1){ // premio
        pf::Texture* texture = new sf::Texture; // Variable local
        texture ->loadFromFile("clip.png");
        aux_obj = new Premio(texture ,speed);
        aux_obj->AsignarPos(min_y,max_y);
        objetos.push_back(aux_obj);

    } else { // obstaculo
        string file_elegido = elegirText(); // para variar la textura de enemigo
        pf::Texture* texture = new sf::Texture; // Variable local
        texture ->loadFromFile(file_elegido);
        aux_obj = new Obstaculo(texture ,speed);
        aux_obj->AsignarPos(min_y,max_y);
        objetos.push_back(aux_obj);
    }

Y esto es todo lo que puedo rascar a partir del código que has publicado. Espero que te esto te guíe para resolver otros problemas que tengas en el programa


text:
Q: angular filter on click by 'last week' data Hi I am new in angular and making my first module. This article is very helpfull. I want to filter my data by lastweek records. I have already found days by current date and given date in mysql query, On button click I am just setting value like DisTopic=1 and this works fine.
May you please tell me how can I apply filter for a range like day>=1 && day<=7
I am using below:-
filter:{'topic': DisTopic,'attachment':attch, 'days':day}

Please help me.

A: Solution 1: with angular-filter module
As stated by other users, you could indeed do that with a custom filter. However, if you find yourself writing a lot of custom filters, I'll advise you have a look at angular-filter module. With this module you can do what you need with the pick filter :

= 1 && days <= 7'">{{task.name}}

See demo fiddle

Solution 2: Custom filter with parameters
Template:

{{task.name}}

Javascript:
app.filter('dayFilter', function() {
    return function(input, startDay, endDay) {
        var filterFunction = function (item) {
            return item.days >= startDay && item.days <= endDay;
        };
        return input.filter(filterFunction);
    };
});

See updated demo fiddle

A: Custom filter example, you can modify as per your need.
Controller
    $scope.search = function (item) {
        if ($scope.searchUser == null || $scope.searchUser.trim() == "")
            return true;
        if (item.FirstName.toLowerCase().indexOf($scope.searchUser.toLowerCase()) != -1 || item.LastName.toLowerCase().indexOf($scope.searchUser.toLowerCase()) != -1 || item.Role.toLowerCase().indexOf($scope.searchUser.toLowerCase()) != -1) {
            return true;
        }
        return false;
    };

and than call it in your view
 | filter:search

So, depending on your requirement, you can pass as many parameters and modify method in controller.

A: //Below code solve my problem.

Date.prototype.getWeek = function () {
// Create a copy of this date object
var target = new Date(this.valueOf());

// ISO week date weeks start on monday
// so correct the day number
var dayNr = (this.getDay() + 6) % 7;

// ISO 8601 states that week 1 is the week
// with the first thursday of that year.
// Set the target date to the thursday in the target week
target.setDate(target.getDate() - dayNr + 3);

// Store the millisecond value of the target date
var firstThursday = target.valueOf();

// Set the target to the first thursday of the year
// First set the target to january first
target.setMonth(0, 1);
// Not a thursday? Correct the date to the next thursday
if (target.getDay() !== 4) {
    target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
}

// The weeknumber is the number of weeks between the
// first thursday of the year and the thursday in the target week
return Math.ceil((firstThursday - target) / 604800000) - 1; // 604800000 = 7 * 24 * 3600 * 1000

};


text:
Q: How we could configure icons image for a new document format in webtop? I am using webtop 6.8.1 , CS 7.2.
I need to add one new Document format say .xyz. I have added it successfully.
But when such Document is listed, its icon is not getting shown correctly, while for other formats like pdf or gif it is showing correct icon.
do we need to add any gif in war file theme/icons folder?

A: You can add custom icon for any format.
Icon images should be in GIF format and should be present in two dimensions: 16x16 and 32x32 pixels. Both GIF files should be located in webtop/custom/theme/documentum/icons/format folder and named using this pattern: f_formatname_XX.gif where:

*

*formatname - is a value of the name attribute of the dm_format object

*XX - is an image size with possible values 16 and 32
For example we had on our past project icons for Jasper Reports and InfoPath XML files in this structure:
webtop
├── custom
│   └── theme
│       └── documentum
│           └── icons
│               ├── format
│               │   ├── f_jasperreport_16.gif
│               │   ├── f_jasperreport_32.gif
│               │   ├── f_xmlinfopath_16.gif
│               │   └── f_xmlinfopath_32.gif
...


text:
Q: GSL: Random number generator should be unique in one program I am using GNU Scientific Library to generate random number. Random Number Generation — GSL 2.7 documentation
In general, we should get a gsl_rng firstly.
       const gsl_rng_type * T;
       gsl_rng * r;

       int i, n = 10;

       gsl_rng_env_setup();

       T = gsl_rng_default;
       r = gsl_rng_alloc (T);

But should we use one gsl_rng in one program?

A: According to the documentation (https://www.gnu.org/software/gsl/doc/html/rng.html, the first paragraph)

Each instance of a generator keeps track of its own state, allowing the generators to be used in multi-threaded programs.

This implies that you can have as many instances of gsl_rng as you wish.


text:
Q: QuickFIX/Python - reading a custom message containing repeating groups I am having a complete mare with quickfix/Python. I'm not new to FIX, nor am I new to quickfix/J, but the Python version is not playing ball.
I have a custom spec which effectively redefines how a MassQuote, 35=i, message looks.
A couple of SO posts suggest (1, 2) that I can create some custom groups that will let me work with custom messages, I'm unable to get this to work.
Is it because I have not loaded in my custom XML before I call fix.Message()? My assumption is that I ought be able to do all this 'standalone', without being inside a session. Currently I'm testing this offline.
import quickfix as fix

class NoQuoteSets(fix.Group): # 296
    def __init__(self):
        order = fix.IntArray(3)
        order[0] = 302  # QuoteSetID
        order[1] = 295  # NoQuoteEntries
        order[2] = 0
        super().__init__(296, 302, order)

class NoQuoteEntries(fix.Group): # 295
    def __init__(self):
        order = fix.IntArray(7)
        order[0] = 299  # QuoteEntryID
        order[1] = 106  # Issuer
        order[2] = 134  # BidSize
        order[3] = 135  # OfferSize
        order[4] = 188  # BidSpotRate
        order[5] = 190  # OfferSpotRate
        order[6] = 0
        super().__init__(295, 299, order)

# example message taken from the spec, broken out for easier reading
MASS_QUOTE = "8=FIX.4.4|9=264|35=i|34=1113826|49=XCT|52=20171106-14:57:08.528|56=Q001|" + \
    "296=5|" + \
    "302=32|295=1|" + \
        "299=0|106=1|134=1250000|188=1.80699|190=1.80709|" + \
    "302=35|295=1|" + \
        "299=0|106=1|190=148.051|" + \
    "302=40|295=1|" + \
        "299=0|106=1|190=1.30712|" + \
    "302=37|295=1|" + \
        "299=0|106=1|190=1.95713|" + \
    "302=34|295=1|" + \
        "299=0|135=500000|10=167|"

m = fix.Message(MASS_QUOTE.replace("|", "\x01"))

m.getField(fix.NoQuoteSets().getTag())   # tag is in the message
m.groupCount(fix.NoQuoteSets().getTag()) # no groups though...

m.getField(fix.NoQuoteEntries().getTag())
m.groupCount(fix.NoQuoteEntries().getTag())

m.hasGroup(NoQuoteSets())
m.hasGroup(NoQuoteEntries())

Result of the get/group functions:
>>> m.getField(fix.NoQuoteSets().getTag())      # tag is in the message
'5'
>>> m.groupCount(fix.NoQuoteSets().getTag())    # no groups though...
0
>>> m.getField(fix.NoQuoteEntries().getTag())   # I guess it just gets the first occurrence?
'1'
>>> m.groupCount(fix.NoQuoteEntries().getTag()) # no groups found here either...
0
>>> m.hasGroup(NoQuoteSets())                   # can't find my custom class either
False
>>> m.hasGroup(NoQuoteEntries())                # sad times
False

Snippet of the xml where I (re)define what a MassQuote message is:
<message name='MassQuote' msgtype='i' msgcat='app'>
 <field name='QuoteID' required='N' />
 <group name='NoQuoteSets' required='Y'>
  <field name='QuoteSetID' required='N' />
  <group name='NoQuoteEntries' required='Y'>
   <field name='QuoteEntryID' required='N' />
   <field name='Issuer' required='N' />
   <field name='BidSize' required='N' />
   <field name='OfferSize' required='N' />
   <field name='BidSpotRate' required='N' />
   <field name='OfferSpotRate' required='N' />
  </group>
 </group>
</message>

If I try to validate message m against my xml file, it throws an unhelpful exception:
>>> d = fix.DataDictionary()
>>> d.readFromURL("/path/to/foo.xml")
>>> d.validate(m)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/mark/.local/lib/python3.8/site-packages/quickfix.py", line 39970, in validate
    return _quickfix.DataDictionary_validate(self, *args)
quickfix.FIXException: Tag not defined for this message type

I can't see any fields in the message that aren't in the xml definition, but maybe I need to sleep on it.
Other notes, I'm using Python 3.8 and installed QuickFIX (1.15.1) via pip.

A: Figured it out.
First, define a new class that extends quickfix.Message
import quickfix as fix

class MassQuote(fix.Message):
    """Custom flavour of a MassQuote"""
    def __init__(self, *args):
        super().__init__(*args)
        self.getHeader().setField(fix.MsgType('i'))
    class NoQuoteSets(fix.Group): # 296
        def __init__(self):
            order = fix.IntArray(3)
            order[0] = 302  # QuoteSetID
            order[1] = 295  # NoQuoteEntries
            order[2] = 0
            super().__init__(296, 302, order)
        class NoQuoteEntries(fix.Group): # 295
            def __init__(self):
                order = fix.IntArray(7)
                order[0] = 299  # QuoteEntryID
                order[1] = 106  # Issuer
                order[2] = 134  # BidSize
                order[3] = 135  # OfferSize
                order[4] = 188  # BidSpotRate
                order[5] = 190  # OfferSpotRate
                order[6] = 0
                super().__init__(295, 299, order)

Then create a quickfix.DataDictionary and read in the XML spec:
data_dictionary = fix.DataDictionary()
data_dictionary.readFromURL("/path/to/foo.xml")

Now you can instantiate a the custom FIX message via constructor Message(fix_string, data_dictionary):
MASS_QUOTE = "8=FIX.4.4|9=264|35=i|34=1113826|49=XCT|52=20171106-14:57:08.528|56=Q001|" + \
    "296=5|" + \
    "302=32|295=1|" + \
        "299=0|106=1|134=1250000|188=1.80699|190=1.80709|" + \
    "302=35|295=1|" + \
        "299=0|106=1|190=148.051|" + \
    "302=40|295=1|" + \
        "299=0|106=1|190=1.30712|" + \
    "302=37|295=1|" + \
        "299=0|106=1|190=1.95713|" + \
    "302=34|295=1|" + \
        "299=0|135=500000|10=167|"

mass_quote = MassQuote(MASS_QUOTE.replace("|", "\x01"), data_dictionary)

You can then sanity check:
data_dictionary.validate(mass_quote)

In order to extract the groups you need to create a 'group' object and work with it:
mass_quote.getField(fix.NoQuoteSets().getTag())    # '5' => sanity check
mass_quote.groupCount(fix.NoQuoteSets().getTag())  # 5   => nice!

# define the object to hold the group
quote_set = MassQuote.NoQuoteSets()
# copy 1st group into object
mass_quote.getGroup(1, quote_set)                  # Swig Object of type 'Group *' at 0x7f747f9652a0>
# now we can access fields of this group
quote_set_id = quote_set.getField(302)             # '32'

If we want to access nested groups, then we call:
# define object to hold nested entry
entry = MassQuote.NoQuoteSets.NoQuoteEntries()
# copy 1st group into object
quote_set.getGroup(1, entry)
# now we can access fields of this group
entry_id = int(entry.getField(299))


text:
Q: Ckeditor se inicia dos veces al abrir modal tengo una funcion JS para abrir un modal, Codigo:
$(document).ready(function() {
$('#eventosanalisis').on('click', '#editar_evento', function(e) {
    e.preventDefault();
    editor = CKEDITOR.replace( 'editor1', {
    });
    var filaactual = $(this).closest("tr");
    var id = filaactual.find("td:eq(0)").text();
    document.getElementById("nombremodalevento").innerHTML = filaactual.find("td:eq(1)").text();
    document.getElementById("fechamodalevento").innerHTML = filaactual.find("td:eq(2)").text();
    document.getElementById("municipiomodalevento").innerHTML = filaactual.find("td:eq(4)").text();
    document.getElementById("sectormodalevento").innerHTML = filaactual.find("td:eq(5)").text();
    editor.setData(filaactual.find("td:eq(3)").text());
    UIkit.modal("#modal-editar", {bgclose: false, keyboard:true}).show();
});
//limpiar ckeditor al cerrar modal
    $('#modal-editar').on('hidden',function (e) {
        CKEDITOR.remove(editor);
    });

});
Al momento de seleccionar una fila en mi tabla funciona bien, pero si cierro el modal y vuelvo a seleccionar la misma fila el editor se muestra dos veces


text:
Q: Combining two stored procedures into a single one using some joins I am very new to Oracle; I have written two stored procedures where they have both different parameters. I would like to combine the queries in that two stored procedures into single query in a single stored procedure, and make sure it supports any criteria.
These are the stored procedures:
procedure usp_testsp1(RC1 OUT RCT1,
                      in_dep_Id IN number,
                      in_Org_id IN number,
                      in_emp_no IN number)
is
begin
      select emp.Name as name,select emp.phone as phone,select emp.Race as
      race
         from employee emp
         JOIN
         Project prj ON
         emp.ProjectId=prj.ProjectId
         JOIN Project_Org Prorg
         ON  prj.ProjectId=Prorg.ProjectId
         JOIN Organization Org1
         ON Prorg.OrgId=Org1.OrgId
         JOIN Organization Org2
         ON emp.OrgId=Org2.OrgId
         AND Org2.OrgType=0
WHERE (upper(emp.emp_No) in (in_emp_No ))
AND Prorg.OrgId=in_Org_id
AND Org2.OrgId=in_dep_Id
end;

procedure usp_testsp2(RC1 OUT RCT1,
                      in_dep_Id IN number,
                      in_Org_id IN number,
                      in_vendor_id IN  raw,
                      in_vendor_startdate IN  date,
                      in_vendor_enddate IN  date)
is
begin
 OPEN RC1 FOR
 select emp.Name as name,select emp.phone as phone,select emp.Race as
      race
 from
     from employee emp
         JOIN
         Project prj ON
         emp.ProjectId=prj.ProjectId
         JOIN Project_Org Prorg
         ON  prj.ProjectId=Prorg.ProjectId
         JOIN Organization Org1
         ON Prorg.OrgId=Org1.OrgId
         JOIN Organization Org2
         ON emp.OrgId=Org2.OrgId
         AND Org2.OrgType=0
         INNER JOIN vendor_Emp
         ON emp.employeeid=vendor_emp.employeeid
         INNER JOIN Vendor
         ON Vendor.VendorId=Vendor_emp.VendorId
WHERE Prorg.OrgId=in_Org_id
AND Org2.OrgId=in_dep_Id
AND Vendor.VendorId=in_vendor_id
AND vendor.StartDate=in_vendor_startdate   AND Vendor.EndDate=in_vendor_enddate
end;

My objective is to combine the queries within these two separate procedures into a single query such that if I combine all the parameters, I have in_emp_no, in_vendor_id, in_vendor_startdate, in_vendor_enddate apart from the common parameters any of the parameters can be null and I want to make sure that those things won't affect the rest of the query even though its not null
For ex i have only in_emp_no ='xxxx' and common inputs rest of the params like
in_vendor_id etc is null.
I would like to make my query to work even with single paramter to filter the result set
NOTEWithout using Dynamic SQL
Thanks
BJ

A: You can make columns in the query behave as optional, as far as your join's go, you may need to play with various combinations to make sure everything works.
Sample Table
create table sqltest (
empid number,
name  varchar2(10),
orgid number,
depid number,
vendorid number);

insert into sqltest values(1,'BoB',1,1,21);
insert into sqltest values(2,'Chuck',1,1,21);
insert into sqltest values(3,'Mary',1,2,21);
insert into sqltest values(4,'Jane',1,2,22);
insert into sqltest values(5,'Rick',2,1,22);
insert into sqltest values(6,'Samir',2,6,23);
insert into sqltest values(7,'Kirk',3,6,23);
insert into sqltest values(8,'Alex',3,9,23);
commit;

Sample Proc
create or replace procedure calltest (
   rc1 out SYS_REFCURSOR,
   pempid number,
   porgid number,
   pdepid number,
   pvendorid number)
is
begin
open rc1 for
 select * from sqltest
 where
  (pempid IS NULL OR empid = pempid) and
  (porgid IS NULL OR orgid = porgid) and
  (pdepid IS NULL OR depid = pdepid) and
  (pvendorid IS NULL OR vendorid = pvendorid);

end;

Sample Call
set autoprint on;

var vcur refcursor;
declare
begin
  calltest(rc1=>:vcur,pempid=>NULL,porgid=>1,pdepid=>NULL,pvendorid=>NULL);
  --calltest(rc1=>:vcur,pempid=>NULL,porgid=>1,pdepid=>2,pvendorid=>NULL);
  --calltest(rc1=>:vcur,pempid=>NULL,porgid=>1,pdepid=>2,pvendorid=>22);
  --calltest(rc1=>:vcur,pempid=>NULL,porgid=>NULL,pdepid=>NULL,pvendorid=>23);
end;

Sample Output 1
VCUR
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EMPID                                   NAME       ORGID                                   DEPID                                   VENDORID
--------------------------------------- ---------- --------------------------------------- --------------------------------------- ---------------------------------------
1                                       BoB        1                                       1                                       21
2                                       Chuck      1                                       1                                       21
3                                       Mary       1                                       2                                       21
4                                       Jane       1                                       2                                       22

Sample Output 2
VCUR
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EMPID                                   NAME       ORGID                                   DEPID                                   VENDORID
--------------------------------------- ---------- --------------------------------------- --------------------------------------- ---------------------------------------
3                                       Mary       1                                       2                                       21
4                                       Jane       1                                       2                                       22

Sample Output 3
VCUR
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EMPID                                   NAME       ORGID                                   DEPID                                   VENDORID
--------------------------------------- ---------- --------------------------------------- --------------------------------------- ---------------------------------------
4                                       Jane       1                                       2                                       22

Sample Output 4
VCUR
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EMPID                                   NAME       ORGID                                   DEPID                                   VENDORID
--------------------------------------- ---------- --------------------------------------- --------------------------------------- ---------------------------------------
6                                       Samir      2                                       6                                       23
7                                       Kirk       3                                       6                                       23
8                                       Alex       3                                       9                                       23


text:
Q: in Immutablejs Map push into List I am a beginner developer who is studying redux. I am using immutablejs to add object type data to the state. When you press the button on the react component, the test data (Map ()) is pushed to the List(). But there is a problem. When the button is pressed, the following type of data is input, and when the page is refreshed, it is updated with normal data. Why is this happening? I really appreciate your help.
Before Refresh
After Refresh
import { handleActions } from 'redux-actions'
import axios from 'axios'
import { Map, List } from 'immutable'

let token = localStorage.token
if (!token)
  token = localStorage.token = Math.random().toString(36).substr(-8)

let instance = axios.create({
  baseURL: 'http://localhost:5001',
  timeout: 1000,
  headers: {'Authorization': token}
})

const GET_POST_PENDING = 'GET_POST_PENDING'
const GET_ALL_POST_SUCCESS = 'GET_ALL_POST_SUCCESS'
const CREATE_POST_SUCCESS = 'CREATE_POST_SUCCESS'
const GET_POST_FAILURE = 'GET_POST_FAILURE'

//actions

export const getPost = (postId) => dispatch => {
  dispatch({type: GET_POST_PENDING});

  return instance.get('/posts').then(
    response => {
      dispatch({
        type: GET_ALL_POST_SUCCESS,
        payload: response
      })
    }
  ).catch((error) => {
    dispatch({
      type: GET_POST_FAILURE,
      payload: error
    })
  })
}

export const createPost = () => dispatch => {
  dispatch({type: GET_POST_PENDING})

  return instance.post('/posts',{
    id: Math.random().toString(36).substr(-10),
    timestamp: Date.now(),
    title: 'test title',
    body:  'test body',
    category: 'redux',
    author: 'minwoo',
    deleted: false,
    voteScore: 1
  }).then(
    response => {
      console.log(response) //check data
      dispatch({
        type:CREATE_POST_SUCCESS,
        payload: response
      })
    }
  ).catch((error) => {
    dispatch({
      type: GET_POST_FAILURE,
      payload: error
    })
  })
}

const initialState = Map({
    posts: List([]),
    comments: List([])
})

I know that the console should not be here. However, when I press the button, I want to check if the response data is transmitted correctly.
//reducer
export default handleActions({
    [GET_POST_PENDING]: (state, action) => {
      return state;
    },
    [GET_ALL_POST_SUCCESS]: (state, action) => {
      console.log(action.payload.data)//for check data
      return state.set('posts', List([...action.payload.data]))
    },
    [CREATE_POST_SUCCESS]: (state, action) => {
      const posts = state.get('posts')
      return state.set('posts', posts.push(
          Map(action.payload.date)
      ))
    },
    [GET_POST_FAILURE]: (state, action) => {
      return state
    }
}, initialState)

The code below is the React component mentioned above.
import React from 'react';
import PropTypes from 'prop-types'
import { List } from 'immutable';

const PostList = ({posts, PostActions: {getPost}}) => {

  const postList = posts.map((post,i) => (

      {post.title}
      <button>edit</button>
      <button>delete</button>

  ))

  return (

      {postList}

  )
}

PostList.proptypes = {
  posts: PropTypes.instanceOf(List),
  getPost: PropTypes.func
}

PostList.defaultProps = {
  posts:[],
  getPost: () => console.log('getPost is not defined')
}

export default PostList

A: List does not deeply convert your data, so when you pass an array of objects to List you will get a List object containing plain JS object.
Use fromJS instead of List in GET_ALL_POST_SUCCESS


text:
Q: Flutter Drawer as separate widget doesn't allow width modification Trying to implement a side drawer in a new app, I could render it but it covers the whole screen, here is how I set it:
the home page:
class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      drawer: SideDrawer(),
      body: Center(
        child: Text('Home page'),
      ),
    );
  }
}

the drawer widget in a separate file:
class SideDrawer extends StatelessWidget {
  const SideDrawer({Key key, this.user}) : super(key: key);
  final FirebaseUser user;

  @override
  Widget build(BuildContext context) {
    return new SizedBox(
      width: MediaQuery.of(context).size.width * 0.85,
      child: Drawer(
          child: new ListView(
        children: <Widget>[
          new DrawerHeader(
            child: new Text("DRAWER HEADER.."),
            decoration: new BoxDecoration(color: Colors.orange),
          ),
          new ListTile(
            title: new Text("Item => 1"),
            onTap: () {
              Navigator.pop(context);
              Navigator.push(context,
                  new MaterialPageRoute(builder: (context) => new HomePage()));
            },
          ),
        ],
      )),
    );
  }
}

Update: The drawer should get user details from the login page, and I guess that the issue here is related to the fact that the drawer is called from a separate home scaffold, that's why at the beginning it covers its whole area despite 85% of the screen area is set in the code.

I have tried this solution too but didn't work, any suggestion ?

A: Most of your code is ok. However you should just make a Widget side(BuildContext context) instead of making a SideDrawer class extends StatelessWidget
Here is the complete main.dart
import 'package:flutter/material.dart';
import 'side.dart';
import 'user.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class HomePage extends StatefulWidget {
  HomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  User user = new User("name","firstname","adress","username");

 Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      drawer: new SideDrawer(user:user),
      body: Center(
        child: Text('Home page'),
      ),
    );
  }
}

And here is the other file containing the sideDrawer
import 'package:flutter/material.dart';
import 'main.dart';
import 'user.dart';

class SideDrawer extends StatelessWidget {

  const SideDrawer({Key key, this.user}) : super(key: key);
  final User user;

  @override
  Widget build(BuildContext context) {
      return new SizedBox(
        width: MediaQuery.of(context).size.width * 0.85,//20.0,
        child: Drawer(
            child: new ListView(
          children: <Widget>[
            new DrawerHeader(
              child: new Text("DRAWER HEADER.."),
              decoration: new BoxDecoration(color: Colors.orange),
            ),
            new ListTile(
              title: new Text(user.name),
              onTap: () {
                Navigator.pop(context);
                Navigator.push(context,
                    new MaterialPageRoute(builder: (context) => new HomePage()));
              },
            ),
            new ListTile(
              title: new Text(user.firstname),
              onTap: () {
                Navigator.pop(context);
                Navigator.push(context,
                    new MaterialPageRoute(builder: (context) => new HomePage()));
              },
            ),
            new ListTile(
              title: new Text(user.adress),
              onTap: () {
                Navigator.pop(context);
                Navigator.push(context,
                    new MaterialPageRoute(builder: (context) => new HomePage()));
              },
            ),
            new ListTile(
              title: new Text(user.username),
              onTap: () {
                Navigator.pop(context);
                Navigator.push(context,
                    new MaterialPageRoute(builder: (context) => new HomePage()));
              },
            ),
          ],
        )),
      );
    }
}

And here is how it show in the end:

Hopping this helps you.
Regards
EDIT:
I've updated code and picture to meet your needs.Also I made a fake User class for demonstration purposes only.

A: Try this method once.
drawer: Container(
    width: MediaQuery.of(context).size.width * 0.85,
    child: Drawer()),


text:
Q: java convert string pattern to date how to convert string to date in java , i have such string that i get from database

Aug 12, 2011, 8:17:46 PM

i used different SimpleDateFormat but i can't convert it , i am getting

java.text.ParseException: Unparseable date:

here is a sample of my code :
SimpleDateFormat sdf = new SimpleDateFormat("MMM d, YYYY, 'T'HH:mm:ss.SSS");
    try{
        Date date = sdf.parse("Aug 12, 2011, 8:17:46 PM");
        System.out.println(date);
    }
    catch(Exception pe){
        System.out.println(pe);
    }

A: i managed to make it work by using

DateTimeFormatter


text:
Q: Call a Stored Procedure From a Stored Procedure and/or using COUNT Ok, First off, I am not a mysql guru. Second, I did search, but saw nothing relevant related to mysql, and since my DB knowledge is limited, guessing syntactical differences between two different Database types just isn't in the cards.
I am trying to determine if a particular value already exists in a table before inserting a row. I've decided to go about this using two Stored procedures. The first:
CREATE PROCEDURE `nExists` ( n VARCHAR(255) ) BEGIN
    SELECT COUNT(*) FROM (SELECT * FROM Users WHERE username=n) as T;
END

And The Second:
CREATE PROCEDURE `createUser` ( n VARCHAR(255) ) BEGIN
    IF (nExists(n) = 0) THEN
        INSERT INTO Users...
    END IF;
END

So, as you can see, I'm attempting to call nExists from createUser. I get the error that no Function exists with the name nExists...because it's a stored procedure. I'm not clear on what the difference is, or why such a difference would be necessary, but I'm a Java dev, so maybe I'm missing some grand DB-related concept here.
Could you guys help me out by any chance?
Thanks

A: Just make the user name (or whatever the primary application index is) a UNIQUE index and then there is no need to test:  Just try to insert a new record.  If it already exists, handle the error.  If it succeeds, all is well.
It can (and should) all be one stored procedure.

A: I'm not sure how it helped you, but...

why SELECT COUNT(*) FROM (SELECT * FROM Users WHERE username=n) and not just SELECT COUNT(*) FROM Users WHERE username=n?


text:
Q: Accessing appsettings.json from startup.cs of another project in .net core 3.1 I have two projects: webAPI and IdentityServer4. these two projects maybe deployed on different physical paths.
I want to read appsettings.json of the main webAPI project and use those connection strings etc in IdentityServer4 project's startup.cs. the solution is in .net 3.1.
There is a config class in a class library of models.
Having a hard time being able to read appsettings.json.


text:
Q: Click and drag from inside canvas element highlights text outside it in some browsers I have a canvas in a page with some text after it:
<canvas id="myCanvas" width="800" height="160"></canvas>

Some text after the canvas

I use JavaScript to draw points/lines. This one's very simple.
var canvas  = document.getElementById("myCanvas");
var ctx     = canvas.getContext("2d");
var drawing = false;

canvas.onmousedown = function(e){
    if( !drawing )
    {
        drawing = true;
        ctx.beginPath();
    }
}

canvas.onmousemove = function(e){
    var x = e.clientX - canvas.offsetLeft;
    var y = e.clientY - canvas.offsetTop;

    if( drawing )
    {
        ctx.lineTo(x,y);
        ctx.stroke();
    }
}

canvas.onmouseup = function(e){
    drawing = false;
}

canvas.onmouseout = function(e){
    drawing = false;
}

If I click on the canvas and hold, I can move my mouse around in the canvas and draw lines. Great! However, if I keep holding and move my mouse down off the canvas and past the
 text, I will end up highlighting that text. Not so great! I've noticed this doesn't happen in some browsers. Here is a list of what I've tested on:

*

*Firefox 37: no highlighting issue exists

*IE 9: highlighting issue exists

*IE 11: highlighting issue exists

*Chrome 41: highlighting issue exists

My question: What can be done to prevent this highlighting issue from occurring?

A: You can dissable text selection onDrag:
Demo: http://jsfiddle.net/zb2soupb/
.unselectable {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

canvas.onmousemove = function(e){

    // Dissable text selection
    document.body.classList.add('unselectable')

    var x = e.clientX - canvas.offsetLeft;
    var y = e.clientY - canvas.offsetTop;

    if( drawing )
    {
        ctx.lineTo(x,y);
        ctx.stroke();
    }
}

canvas.onmouseup = function(e){
    drawing = false;
    document.body.classList.remove('unselectable')
}

A: I think the best answer is to call "e.preventDefault()" inside all your canvas mouse event handlers, e.g.:
canvas.onmousedown = function(e){
    e.preventDefault();    // <-- this
    if( !drawing )
    {
        drawing = true;
        ctx.beginPath();
    }
}


text:
Q: Evaluating the derivative of $f(x)=x^2\sin^2\frac{1}{x}$ at $x=0$ gives $0$, but the graph of $f'(x)$ isn't defined at $x=0$. Why? I am new to calculus. I am having an issue in this problem. If we have a function $$f(x)=x^2 \sin^2\left(\frac{1}{x}\right)$$ If I try to differentiate it and try to find its value at $x=0$ by using first principle of differentiation, I get
$$f'(0)=\lim_{h \to 0 }\frac{f(0+h)-f(0)}{h}$$
which on simplification gives $f'(0)=0$. But if I see the graph of its derivative, I see $f'(x)$ does not have any defined value at $x=0$. Why is it so?
Edit- The value of $f(x)$ at $x=0$ is $0$

A: $f$ is a nice and strange function.
It is indeed differentiable at $0$ and its derivative is equal to zero at that point as you proved it. However, the limit at the origin of the derivative doesn't exist.
Both things are not incompatible though.

A: What the graph (shown below) suggests is that $f'$ is discontinuous at $0$ (and, yes, $f'$ is discontinuous at $0$). That, however, does not prevent $f$ from being differentiable at $0$.


text:
Q: Remove first multiline comment from file I'm trying to remove all the initial multiline comments from a large directory of source files using unix tools.
For example, I have this file testfile.c
/*
   testfile.c
   get rid of me
*/

int main(int argc, const char *argv[]) {
/*
   keep me
*/
    return 0;
}

/*
   keep me
*/

I've tried using sed like this:
sed '/\/\*/,/\*\//d' testfile.c

but that strips all multiline comments resulting in:
int main(int argc, const char *argv[]) {
    return 0;
}

Is there a way to do this and only remove the multiline comment if it starts at the very first line of the file and to leave all other comments in tact?

A: This assumes that there's nothing you want from your file before the first multiline comment. It just says to start printing after you see the */ that ends the first comment (and then never to stop again regardless of what's seen).
$ awk '!f&&/\*\//{f=1;next}f' testfile.c

int main(int argc, const char *argv[]) {
/*
   keep me
*/
    return 0;
}

/*
   keep me
*/

Explanation:
!f && /\*\// { f=1; next }

If the flag f is not set (that is, if f equals 0, which it does when the program begins), and the current line contains the pattern */ (where both characters require escaping with \), then set the flag to 1 and go immediately to the next line (without printing).
f

Print the current line if the flag f is set to 1 (and recall that we only arrive here if the next statement was not executed, thereby avoiding to print the last line of the initial comment).

A: Wrap your part /\/\*/,/\*\//d with GNU sed in 1,/\*\//{ ... }:
sed '1,/\*\//{ /\/\*/,/\*\//d }' file

Output:

int main(int argc, const char *argv[]) {
/*
   keep me
*/
    return 0;
}

/*
   keep me
*/

A: if your comments all end the same way
try something like
awk 'BEGIN {while($1 != "*/") getline}{print}'

otherwise you will have to do something fancier looking at the last two chars of a line till you find the end of the first comment.
This has the feature of not testing any line after it has done its job.

A: sed '/\/\*/,/\*\// s/.*//g' filename | awk '!/^$/'

*

*Matching by pattern ranges and replacing all by nothing.

*Removing empty lines

Output:

  int main(int argc, const char *argv[]) {
        return 0;
        }


text: Q: Java Custom TrustStore I wish to implement a custom trustStore. I have the path to new trustStore, but I also wish to keep the default one. Based on an if-else loop I want to decide which trustStore to use in SSL Context. Is this possible? Thanks!


text:
Q: Add more than 14 parameters to OracleParameterCollection I have a problem with inserting data into a table.
The table is actually very large; it has more than 100 fields,
and I tried to set parameters using C# and OracleParameterCollection (System.Data.OracleClient) like this:
var param = new OracleParameter(":pEmpNo1", OracleType.Number);
param.Value = 1;
command.Parameters.Add(param);

param = new OracleParameter(":pEmpNo2", OracleType.Number);
param.Value = 2;
command.Parameters.Add(param);

param = new OracleParameter(":pEmpNo3", OracleType.Number);
param.Value = 3;
command.Parameters.Add(param);
    :
    :
param = new OracleParameter(":pEmpNo14", OracleType.Number);
param.Value = 14;
command.Parameters.Add(param);

param = new OracleParameter(":pEmpNo15", OracleType.Number);
param.Value = 15;
command.Parameters.Add(param);

And my SQL looks like this:
INSERT INTO MY_TABLE (
    pEmpNo1,
    pEmpNo2,
    pEmpNo3,
    pEmpNo4,
    pEmpNo5,
    pEmpNo6,
    pEmpNo7,
    pEmpNo8,
    pEmpNo9,
    pEmpNo10,
    pEmpNo11,
    pEmpNo12,
    pEmpNo13,
    pEmpNo14,
    pEmpNo15
) VALUES (
    :pEmpNo1,
    :pEmpNo2,
    :pEmpNo3,
    :pEmpNo4,
    :pEmpNo5,
    :pEmpNo6,
    :pEmpNo7,
    :pEmpNo8,
    :pEmpNo9,
    :pEmpNo10,
    :pEmpNo11,
    :pEmpNo12,
    :pEmpNo13,
    :pEmpNo14,
    :pEmpNo15
);

When I execute the program, an error "ORA-01008: not all variables bound" occurred. However, when I reduce adding parameter less than 15 (for example, delete "pEmpNo15" from both my SQL and oracleParameterCollection), it work just fine. I don't know why, and somehow I want to add more than 14 parameters to the OracleParameterCollection. Please let me know if you have any information, thank you in advance!
Update:
I corrected the SQL sample code (I removed last comma wrongly inserted in front of ") VALUES ("). Still I have the same issue...

A: Your problem is with the last column "pEmpNo15," (note the comma) it should be change to "pEmpNo15" (no comma)
Your query should looks like :
INSERT INTO MY_TABLE (
    pEmpNo1,
    pEmpNo2,
    pEmpNo3,
    pEmpNo4,
    pEmpNo5,
    pEmpNo6,
    pEmpNo7,
    pEmpNo8,
    pEmpNo9,
    pEmpNo10,
    pEmpNo11,
    pEmpNo12,
    pEmpNo13,
    pEmpNo14,
    pEmpNo15
) VALUES (
    :pEmpNo1,
    :pEmpNo2,
    :pEmpNo3,
    :pEmpNo4,
    :pEmpNo5,
    :pEmpNo6,
    :pEmpNo7,
    :pEmpNo8,
    :pEmpNo9,
    :pEmpNo10,
    :pEmpNo11,
    :pEmpNo12,
    :pEmpNo13,
    :pEmpNo14,
    :pEmpNo15
);