In the example that you have provided there is nothing that would throw a SQL command not properly formed
error. How are you executing this query? What are you not showing us?
This example script works fine:
create table tableName
(session_start_date_time DATE);
insert into tableName (session_start_date_time)
values (sysdate+1);
select * from tableName
where session_start_date_time > to_date('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi');
As does this example:
create table tableName2
(session_start_date_time TIMESTAMP);
insert into tableName2 (session_start_date_time)
values (to_timestamp('01/12/2012 16:01:02.345678','mm/dd/yyyy hh24:mi:ss.ff'));
select * from tableName2
where session_start_date_time > to_date('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi');
select * from tableName2
where session_start_date_time > to_timestamp('01/12/2012 14:01:02.345678','mm/dd/yyyy hh24:mi:ss.ff');
So there must be something else that is wrong.
As of late April 2009, Microsoft has discontinued all previous versions of Visual Studio Express, including 2005. It is no longer possible to obtain these previous versions from the Microsoft website.
From Here
Instead of %w()
we should use %w[]
According to Ruby style guide:
Prefer %w to the literal array syntax when you need an array of words (non-empty strings without spaces and special characters in them). Apply this rule only to arrays with two or more elements.
# bad
STATES = ['draft', 'open', 'closed']
# good
STATES = %w[draft open closed]
Use the braces that are the most appropriate for the various kinds of percent literals.
[]
for array literals(%w, %i, %W, %I
) as it is aligned with the standard array literals.
# bad
%w(one two three)
%i(one two three)
# good
%w[one two three]
%i[one two three]
For more read here.
Create 2 methods which handle the cases. You can instruct the @RequestMapping
annotation to take into account certain parameters whilst mapping the request. That way you can nicely split this into 2 methods.
@RequestMapping (value="/submit/id/{id}", method=RequestMethod.GET,
produces="text/xml", params={"logout"})
public String handleLogout(@PathVariable("id") String id,
@RequestParam("logout") String logout) { ... }
@RequestMapping (value="/submit/id/{id}", method=RequestMethod.GET,
produces="text/xml", params={"name", "password"})
public String handleLogin(@PathVariable("id") String id, @RequestParam("name")
String username, @RequestParam("password") String password,
@ModelAttribute("submitModel") SubmitModel model, BindingResult errors)
throws LoginException {...}
When I have used replace all 0 and match case with blank in Excel 2010 I find it paints the cell blank but the data is just whitewashed. So you use counta and the cell is still counted as with something to count. Never use that method in 2010 unless it is for display purposes only.
You simply want the File.GetLastWriteTime
static method.
Example:
var lastModified = System.IO.File.GetLastWriteTime("C:\foo.bar");
Console.WriteLine(lastModified.ToString("dd/MM/yy HH:mm:ss"));
Note however that in the rare case the last-modified time is not updated by the system when writing to the file (this can happen intentionally as an optimisation for high-frequency writing, e.g. logging, or as a bug), then this approach will fail, and you will instead need to subscribe to file write notifications from the system, constantly listening.
Give the textbox an id of "txtValue" and change the input button declaration to the following:
<input type="button" value="submit" onclick="verifyorder(document.getElementById('txtValue').value)" />
For people who want to use another diff tool not listed in git, say with nvim
. here is what I ended up using:
git config --global alias.d difftool -x <tool name>
In my case, I set <tool name>
to nvim -d
and invoke the diff command with
git d <file>
You can do it using only grep by:
which gives you the following:
while read line ; do (echo $line | grep PATTERN) || echo $line ; done < inputfile
Here is the way works for me.
mysql> show databases ;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> uninstall plugin validate_password;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
WIth the Help of @excray's comment, I manage to figure it out the answer, What we need to do is actually write a simple for loop to iterate over the two arrays that represent the train data and test data.
First implement a simple lambda function to hold formula for the cosine calculation:
cosine_function = lambda a, b : round(np.inner(a, b)/(LA.norm(a)*LA.norm(b)), 3)
And then just write a simple for loop to iterate over the to vector, logic is for every "For each vector in trainVectorizerArray, you have to find the cosine similarity with the vector in testVectorizerArray."
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from nltk.corpus import stopwords
import numpy as np
import numpy.linalg as LA
train_set = ["The sky is blue.", "The sun is bright."] #Documents
test_set = ["The sun in the sky is bright."] #Query
stopWords = stopwords.words('english')
vectorizer = CountVectorizer(stop_words = stopWords)
#print vectorizer
transformer = TfidfTransformer()
#print transformer
trainVectorizerArray = vectorizer.fit_transform(train_set).toarray()
testVectorizerArray = vectorizer.transform(test_set).toarray()
print 'Fit Vectorizer to train set', trainVectorizerArray
print 'Transform Vectorizer to test set', testVectorizerArray
cx = lambda a, b : round(np.inner(a, b)/(LA.norm(a)*LA.norm(b)), 3)
for vector in trainVectorizerArray:
print vector
for testV in testVectorizerArray:
print testV
cosine = cx(vector, testV)
print cosine
transformer.fit(trainVectorizerArray)
print
print transformer.transform(trainVectorizerArray).toarray()
transformer.fit(testVectorizerArray)
print
tfidf = transformer.transform(testVectorizerArray)
print tfidf.todense()
Here is the output:
Fit Vectorizer to train set [[1 0 1 0]
[0 1 0 1]]
Transform Vectorizer to test set [[0 1 1 1]]
[1 0 1 0]
[0 1 1 1]
0.408
[0 1 0 1]
[0 1 1 1]
0.816
[[ 0.70710678 0. 0.70710678 0. ]
[ 0. 0.70710678 0. 0.70710678]]
[[ 0. 0.57735027 0.57735027 0.57735027]]
Since PowerShell can call .NET classes, you could do the following:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("somefilepath").FileVersion
Or as noted here on a list of files:
get-childitem * -include *.dll,*.exe | foreach-object { "{0}`t{1}" -f $_.Name, [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileVersion }
Or even nicer as a script: https://jtruher3.wordpress.com/2006/05/14/powershell-and-file-version-information/
<meta charset='utf-8'> overrides the apache default charset (cf /etc/apache2/conf.d/charset)
If this is not enough, then you probably created your original file with iso-8859-1 encoding character set. You have to convert it to the proper character set:
iconv -f ISO-8859-1 -t UTF-8 source_file.php -o new file.php
I got it to work after I unchecked the following options in the Run/Debug Configurations for main.py
Add content roots to PYTHONPATH
Add source roots to PYTHONPATH
This is after I had invalidated the cache and restarted.
try changing in the gradle file the targetSdkVersion to 8
targetSdkVersion 8
may be you can specify where the buildfile is located and then invoke desired action.
Eg: ant -file {BuildfileLocation/build.xml} -v
Dragon NaturallySpeaking seems to support MP3 input.
If you want an open source version (I think there are some Asterisk integration projects based on this one).
I also faced this type of issue.I am using tomcat server then i put endorsed folder in tomcat then its start working.And also i replaced JDK1.6 with 1.7 then also its working.Finally i learn SSL then I resolved this type of issues.First you need to download the certificates from that servie provider server.then you are handshake is successfull. 1.Try to put endorsed folder in your server Next way 2.use jdk1.7
Next 3.Try to download valid certificates using SSL
Another approach would be to leverage the INSERT ALL
syntax from oracle,
INSERT ALL
INTO table1(email, campaign_id) VALUES (email, campaign_id)
WITH source_data AS
(SELECT '[email protected]' email,100 campaign_id
FROM dual
UNION ALL
SELECT '[email protected]' email,200 campaign_id
FROM dual)
SELECT email
,campaign_id
FROM source_data src
WHERE NOT EXISTS (SELECT 1
FROM table1 dest
WHERE src.email = dest.email
AND src.campaign_id = dest.campaign_id);
INSERT ALL
also allow us to perform a conditional insert into multiple tables based on a sub query as source.
There are some really clean and nice examples are there to refer.
I made https://www.npmjs.com/package/jsx-control-statements to make it a bit easier, basically it allows you to define <If>
conditionals as tags and then compiles them into ternary ifs so that the code inside the <If>
only gets executed if the condition is true.
Use %0D%0A
for a line break in your body
Example (Demo):
<a href="mailto:[email protected]?subject=Suggestions&body=name:%0D%0Aemail:">test</a>?
^^^^^^
I had pip
referring by default to pip3, which made me download the libs for python3. On the contrary I launched the shell as python
(which opened python 2) and the library wasn't installed there obviously.
Once I matched the names pip3 -> python3, pip -> python (2) all worked.
$a = array(
'blue' => 'nice',
'car' => 'fast',
'number' => 'none'
);
var_dump(array_search('car', array_keys($a)));
var_dump(array_search('blue', array_keys($a)));
var_dump(array_search('number', array_keys($a)));
select column1, coulumn2, case when colum1=column2 then 'true' else 'false' end from table;
HTH
File.Copy(file_name, destination_dir + file_name.Substring(source_dir.Length), true);
This line has the error because what the code expected is the directory name + file name
, not the file name.
This is the correct one
File.Copy(source_dir + file_name, destination_dir + file_name.Substring(source_dir.Length), true);
Taken from this page:
Here's a quick cheat sheet of the JPA world:
Just try this :
ArrayList<SomeClass> arrayList;
public SomeConstructor(List<SomeClass> listData) {
arrayList.addAll(listData);
}
Use which(mydata_2$height_chad1 == 2585)
Short example
df <- data.frame(x = c(1,1,2,3,4,5,6,3),
y = c(5,4,6,7,8,3,2,4))
df
x y
1 1 5
2 1 4
3 2 6
4 3 7
5 4 8
6 5 3
7 6 2
8 3 4
which(df$x == 3)
[1] 4 8
length(which(df$x == 3))
[1] 2
count(df, vars = "x")
x freq
1 1 2
2 2 1
3 3 2
4 4 1
5 5 1
6 6 1
df[which(df$x == 3),]
x y
4 3 7
8 3 4
As Matt Weller pointed out, you can use the length
function.
The count
function in plyr
can be used to return the count of each unique column value.
I encountered the same thing. In package.json, change mongodb line to "mongodb": "^2.2.33". You will need to npm uninstall mongodb; then npm install to install this version.
This resolved the issue for me. Seems to be a bug or docs need to be updated.
Add .done() to your function
var id;
var vname;
function ajaxCall(){
for(var q = 1; q<=10; q++){
$.ajax({
url: 'api.php',
data: 'id1='+q+'',
dataType: 'json',
async:false,
success: function(data)
{
id = data[0];
vname = data[1];
}
}).done(function(){
printWithAjax();
});
}//end of the for statement
}//end of ajax call function
You can get the version of Python by using the following command
python --version
You can even get the version of any package installed in venv using pip freeze
as:
pip freeze | grep "package name"
Or using the Python interpreter as:
In [1]: import django
In [2]: django.VERSION
Out[2]: (1, 6, 1, 'final', 0)
I know this is an old thread, but it exactly matches what recently happened to me and I thought I'd document it here. The setup (in Docker) is as follows:
The symptom was a "502 Gateway Timeout" on the application login prompt. Examination of logs found:
POST
to /login
... and so .../login
request, and eventually reported a timeout.499
response, which of course means "the host died."/login
request did not appear at all(!) in the FPM server's logs!It turned out that the problem was a failure to connect to the database to verify the login. But how to figure that out turned out to be pure guesswork.
The complete absence of application traceback logs ... or even a record that the request had been received by FPM ... was a complete (and, devastating ...) surprise to me. Yes, the application is supposed to log failures, but in this case it looks like the FPM worker process died with a runtime error, leading to the 499
response from nginx. Now, this obviously is a problem in our application ... somewhere. But I wanted to record the particulars of what happened for the benefit of the next folks who face something like this.
jenkins.exe stop
jenkins.exe start
jenkins.exe restart
These commands will work from cmd only if you run CMD with admin permissions
Fix of above function for play and pause
public void playBeep ( String word )
{
try
{
if ( ( m == null ) )
{
m = new MediaPlayer ();
}
else if( m != null&&lastPlayed.equalsIgnoreCase (word)){
m.stop();
m.release ();
m=null;
lastPlayed="";
return;
}else if(m != null){
m.release ();
m = new MediaPlayer ();
}
lastPlayed=word;
AssetFileDescriptor descriptor = context.getAssets ().openFd ( "rings/" + word + ".mp3" );
long start = descriptor.getStartOffset ();
long end = descriptor.getLength ();
// get title
// songTitle=songsList.get(songIndex).get("songTitle");
// set the data source
try
{
m.setDataSource ( descriptor.getFileDescriptor (), start, end );
}
catch ( Exception e )
{
Log.e ( "MUSIC SERVICE", "Error setting data source", e );
}
m.prepare ();
m.setVolume ( 1f, 1f );
// m.setLooping(true);
m.start ();
}
catch ( Exception e )
{
e.printStackTrace ();
}
}
You could do either:
dirname(__DIR__);
Or:
__DIR__ . '/..';
...but in a web server environment you will probably find that you are already working from current file's working directory, so you can probably just use:
'../'
...to reference the directory above. You can replace __DIR__
with dirname(__FILE__)
before PHP 5.3.0.
You should also be aware what __DIR__
and __FILE__
refers to:
The full path and filename of the file. If used inside an include, the name of the included file is returned.
So it may not always point to where you want it to.
Recently I had this problem after upgrading node.js (and inevitably npm) to the newest version:
> npm --version
< 2.0.0-alpha-5
Note: I didn't ask for an unstable version, I just got it after brew install npm
on OSX.
Downgrading npm fixed the problem for me.
The easiest way to install the stable npm is npm install -g npm
but it might not work under some circumstances and downgrade of node.js might be needed then.
The answere by Patrick and by Jesse Chisholm made me do the following:
#define QUEEN 'Q'
#define JACK 'J'
#define CHECK_QUEEN(s) (s==QUEEN)
#define CHECK_JACK(s) (s==JACK)
#define USER 'Q'
[... later on in code ...]
#if CHECK_QUEEN(USER)
compile_queen_func();
#elif CHECK_JACK(USER)
compile_jack_func();
#elif
#error "unknown user"
#endif
Instead of #define USER 'Q'
#define USER QUEEN
should also work but was not tested also works and might be easier to handle.
EDIT: According to the comment of @Jean-François Fabre I adapted my answer.
To stick to ==
without consideration of the other type, the following is also possible.
type(a) == type(None)
Implement "use strict"
in all script tags to find inconsistencies and fix potential unscoped variables!
We can use input data to pass it as a parameter in the HTML file w use ng-model to bind the value of input field.
<input type="text" placeholder="Enter your Email" ng-model="email" required>
<input type="text" placeholder="Enter your password " ng-model="password" required>
and in the js file w use $scope to access this data:
$scope.email="";
$scope.password="";
Controller function will be something like that:
var app = angular.module('myApp', []);
app.controller('assignController', function($scope, $http) {
$scope.email="";
$scope.password="";
$http({
method: "POST",
url: "http://localhost:3000/users/sign_in",
params: {email: $scope.email, password: $scope.password}
}).then(function mySuccess(response) {
// a string, or an object, carrying the response from the server.
$scope.myRes = response.data;
$scope.statuscode = response.status;
}, function myError(response) {
$scope.myRes = response.statusText;
});
});
If you create a new (not yet implemented) function in NetBeans, then it generates a method body with the following statement:
throw new java.lang.UnsupportedOperationException("Not supported yet.");
Therefore, I recommend to use the UnsupportedOperationException.
In SQL Server if you need only the hh:mi
, you can use:
DECLARE @datetime datetime
SELECT @datetime = GETDATE()
SELECT RIGHT('0'+CAST(DATEPART(hour, @datetime) as varchar(2)),2) + ':' +
RIGHT('0'+CAST(DATEPART(minute, @datetime)as varchar(2)),2)
This should do the work
import datetime
datetime.datetime.now().strftime("%H:%M:%S.%f")
It will print
HH:MM:SS.microseconds
like this e.g 14:38:19.425961
I found the best way: I always check the latest branch created by this way
git for-each-ref --sort=-committerdate refs/heads/
You'll probably want to get several random numbers, and may want to be able to specify a different range for each one, so you should define a function. In my example, I generate numbers from 25 through 30 with call:rand 25 30
. And the result is in RAND_NUM
after that function exits.
@echo off & setlocal EnableDelayedExpansion
for /L %%a in (1 1 10) do (
call:rand 25 30
echo !RAND_NUM!
)
goto:EOF
REM The script ends at the above goto:EOF. The following are functions.
REM rand()
REM Input: %1 is min, %2 is max.
REM Output: RAND_NUM is set to a random number from min through max.
:rand
SET /A RAND_NUM=%RANDOM% * (%2 - %1 + 1) / 32768 + %1
goto:EOF
returning true or false indicates that whether execution should continue or stop right there. So just an example
<input type="button" onclick="return func();" />
Now if func() is defined like this
function func()
{
// do something
return false;
}
the click event will never get executed. On the contrary if return true is written then the click event will always be executed.
public init() {_x000D_
return from(_x000D_
fetch("assets/server-config.json").then(response => {_x000D_
return response.json();_x000D_
})_x000D_
)_x000D_
.pipe(_x000D_
map(config => {_x000D_
return config;_x000D_
})_x000D_
)_x000D_
.toPromise();_x000D_
}
_x000D_
I would simply associate the handler in the View constructor:
MyWindow()
{
// Set up ViewModel, assign to DataContext etc.
Closing += viewModel.OnWindowClosing;
}
Then add the handler to the ViewModel
:
using System.ComponentModel;
public void OnWindowClosing(object sender, CancelEventArgs e)
{
// Handle closing logic, set e.Cancel as needed
}
In this case, you gain exactly nothing except complexity by using a more elaborate pattern with more indirection (5 extra lines of XAML plus Command
pattern).
The "zero code-behind" mantra is not the goal in itself, the point is to decouple ViewModel from the View. Even when the event is bound in code-behind of the View, the ViewModel
does not depend on the View and the closing logic can be unit-tested.
Switch to Branch2
git checkout Branch2
Apply the current (Branch2) changes on top of the Branch1 changes, staying in Branch2:
git rebase Branch1
Which would leave you with the desired result in Branch2:
a -- b -- c <-- Master
\
d -- e <-- Branch1
\
d -- e -- f' -- g' <-- Branch2
You can delete Branch1.
Here comes another vote in favor of PHPKB knowledge base software. We came to know about PHPKB from this post on StackOverflow and bought it as recommended by Julien and Ricardo. I am glad to inform that it was a right decision. Although we had to get certain features customized according to our needs but their support team exceeded our expectations. So, I just thought of sharing the news here. We are fully satisfied with PHPKB knowledge base software.
Then there's the way of expressing your 'if' construct more tersely:
FOO='default'
[ -n "${VARIABLE}" ] && FOO=${VARIABLE}
Try this, it is updating the current location, and it works fine.
public void onLocationChanged(@NonNull Location location) {
//here we update the location on the map
LatLng myActualLocation = new LatLng(location.getLatitude(), location.getLongitude());
if (markerName!=null){ // marker name is declared as a gloval variable.
markerName.remove();
}
markerName = mMap.addMarker(new MarkerOptions().position(myActualLocation).title("Marker Miami").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
// mMap.addMarker(new MarkerOptions().position(myActualLocation).title("Marker Miami").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myActualLocation,18));
}
I'm using gson 2.2.3
public class Main {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
JsonReader jsonReader = new JsonReader(new FileReader("jsonFile.json"));
jsonReader.beginObject();
while (jsonReader.hasNext()) {
String name = jsonReader.nextName();
if (name.equals("descriptor")) {
readApp(jsonReader);
}
}
jsonReader.endObject();
jsonReader.close();
}
public static void readApp(JsonReader jsonReader) throws IOException{
jsonReader.beginObject();
while (jsonReader.hasNext()) {
String name = jsonReader.nextName();
System.out.println(name);
if (name.contains("app")){
jsonReader.beginObject();
while (jsonReader.hasNext()) {
String n = jsonReader.nextName();
if (n.equals("name")){
System.out.println(jsonReader.nextString());
}
if (n.equals("age")){
System.out.println(jsonReader.nextInt());
}
if (n.equals("messages")){
jsonReader.beginArray();
while (jsonReader.hasNext()) {
System.out.println(jsonReader.nextString());
}
jsonReader.endArray();
}
}
jsonReader.endObject();
}
}
jsonReader.endObject();
}
}
"
git fetch
" (hence "git pull
" as well) learned to check "fetch.prune
" and "remote.*.prune
" configuration variables and to behave as if the "--prune
" command line option was given.
That means that, if you set remote.origin.prune to true:
git config remote.origin.prune true
Any git fetch
or git pull
will automatically prune.
Note: Git 2.12 (Q1 2017) will fix a bug related to this configuration, which would make git remote rename
misbehave.
See "How do I rename a git remote?".
See more at commit 737c5a9:
Without "
git fetch --prune
", remote-tracking branches for a branch the other side already has removed will stay forever.
Some people want to always run "git fetch --prune
".To accommodate users who want to either prune always or when fetching from a particular remote, add two new configuration variables "
fetch.prune
" and "remote.<name>.prune
":
- "
fetch.prune
" allows to enable prune for all fetch operations.- "
remote.<name>.prune
" allows to change the behaviour per remote.The latter will naturally override the former, and the
--[no-]prune
option from the command line will override the configured default.Since
--prune
is a potentially destructive operation (Git doesn't keep reflogs for deleted references yet), we don't want to prune without users consent, so this configuration will not be on by default.
It's not the prettiest CSS, but I got this to work:
table td {
width: 30px;
overflow: hidden;
display: inline-block;
white-space: nowrap;
}
Examples, with and without ellipses:
body {_x000D_
font-size: 12px;_x000D_
font-family: Tahoma, Helvetica, sans-serif;_x000D_
}_x000D_
_x000D_
table {_x000D_
border: 1px solid #555;_x000D_
border-width: 0 0 1px 1px;_x000D_
}_x000D_
table td {_x000D_
border: 1px solid #555;_x000D_
border-width: 1px 1px 0 0;_x000D_
}_x000D_
_x000D_
/* What you need: */_x000D_
table td {_x000D_
width: 30px;_x000D_
overflow: hidden;_x000D_
display: inline-block;_x000D_
white-space: nowrap;_x000D_
}_x000D_
_x000D_
table.with-ellipsis td { _x000D_
text-overflow: ellipsis;_x000D_
}
_x000D_
<table cellpadding="2" cellspacing="0">_x000D_
<tr>_x000D_
<td>first</td><td>second</td><td>third</td><td>forth</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>first</td><td>this is really long</td><td>third</td><td>forth</td>_x000D_
</tr>_x000D_
</table>_x000D_
_x000D_
<br />_x000D_
_x000D_
<table class="with-ellipsis" cellpadding="2" cellspacing="0">_x000D_
<tr>_x000D_
<td>first</td><td>second</td><td>third</td><td>forth</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>first</td><td>this is really long</td><td>third</td><td>forth</td>_x000D_
</tr>_x000D_
</table>
_x000D_
Date.parse
recognizes only specific formats, and you don't have the option of telling it what your input format is. In this case it thinks that the input is in the format mm/dd/yyyy
, so the result is wrong.
To fix this, you need either to parse the input yourself (e.g. with String.split
) and then manually construct a Date
object, or use a more full-featured library such as datejs.
Example for manual parsing:
var input = $('#' + controlName).val();
var parts = str.split("/");
var d1 = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));
Example using date.js:
var input = $('#' + controlName).val();
var d1 = Date.parseExact(input, "d/M/yyyy");
I have put @Sharon's code together into the following, which works for me on the iPad with two-finger scrolling. The only thing you should have to change to get it working is the src attribute on the iframe (I used a PDF document).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Pdf Scrolling in mobile Safari</title>
</head>
<body>
<div id="scroller" style="height: 400px; width: 100%; overflow: auto;">
<iframe height="100%" id="iframe" scrolling="no" width="100%" id="iframe" src="data/testdocument.pdf" />
</div>
<script type="text/javascript">
setTimeout(function () {
var startY = 0;
var startX = 0;
var b = document.body;
b.addEventListener('touchstart', function (event) {
parent.window.scrollTo(0, 1);
startY = event.targetTouches[0].pageY;
startX = event.targetTouches[0].pageX;
});
b.addEventListener('touchmove', function (event) {
event.preventDefault();
var posy = event.targetTouches[0].pageY;
var h = parent.document.getElementById("scroller");
var sty = h.scrollTop;
var posx = event.targetTouches[0].pageX;
var stx = h.scrollLeft;
h.scrollTop = sty - (posy - startY);
h.scrollLeft = stx - (posx - startX);
startY = posy;
startX = posx;
});
}, 1000);
</script>
</body>
</html>
In the same way with Array
// Array of choices
String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"};
// Selection of the spinner
Spinner spinner = (Spinner) findViewById(R.id.myspinner);
// Application of the Array to the Spinner
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, colors);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);
Also check this answer from here: Cannot manually edit applicationhost.config
The answer is simple, if not that obvious: win2008 is 64bit, notepad++ is 32bit. When you navigate to Windows\System32\inetsrv\config using explorer you are using a 64bit program to find the file. When you open the file using using notepad++ you are trying to open it using a 32bit program. The confusion occurs because, rather than telling you that this is what you are doing, windows allows you to open the file but when you save it the file's path is transparently mapped to Windows\SysWOW64\inetsrv\Config.
So in practice what happens is you open applicationhost.config using notepad++, make a change, save the file; but rather than overwriting the original you are saving a 32bit copy of it in Windows\SysWOW64\inetsrv\Config, therefore you are not making changes to the version that is actually used by IIS. If you navigate to the Windows\SysWOW64\inetsrv\Config you will find the file you just saved.
How to get around this? Simple - use a 64bit text editor, such as the normal notepad that ships with windows.
Performance is based on the amount of data you are executing on...
If it is less data around 20k. JOIN works better.
If the data is more like 100k+ then IN works better.
If you do not need the data from the other table, IN is good, But it is alwys better to go for EXISTS.
All these criterias I tested and the tables have proper indexes.
Alternative Solution
Instead halting a debug session to add some throw-away statements to then recompile and restart, why not just use the debugger to answer that question immediately when a breakpoint is hit?
That can be done by opening up the Immediate Window
of the debugger and typing a GetType
off of the exception and hitting Enter. The immediate window also allows one to interrogate variables as needed.
See VS Docs: Immediate Window
For example I needed to know what the exception was and just extracted the Name
property of GetType
as such without having to recompile:
There are no private
, public
or protected
keywords in current ECMAScript 6 specification.
So Traceur does not support private
and public
. 6to5 (currently it's called "Babel") realizes this proposal for experimental purpose (see also this discussion). But it's just proposal, after all.
So for now you can just simulate private properties through WeakMap
(see here). Another alternative is Symbol
- but it doesn't provide actual privacy as the property can be easily accessed through Object.getOwnPropertySymbols
.
IMHO the best solution at this time - just use pseudo privacy. If you frequently use apply
or call
with your method, then this method is very object specific. So it's worth to declare it in your class just with underscore prefix:
class Animal {
_sayHi() {
// do stuff
}
}
Just escape the dashes to prevent them from being interpreted (I don't think underscore needs escaping, but it can't hurt). You don't say which regex you are using.
([A-Za-z0-9\-\_]+)
Turns out it's the Cache of the browser, using Chrome here. Simply check the "Disable cache" under Inspect (Element) solved my problem.
Use this it will work,
<body>
<h1>Adding 'a' and 'b'</h1>
<form>
a: <input type="number" name="a" id="a"><br>
b: <input type="number" name="b" id="a"><br>
<button onclick="add()">Add</button>
</form>
<script>
function add() {
var m = document.getElementById("a").value;
var n = document.getElementById("b").value;
var sum = m + n;
alert(sum);
}
</script>
</body>
You could move the conditional to:
v = [22, 13, 45, 50, 98, 69, 43, 44, 1]
[ (x+1 if x >=45 else x+5) for x in v ]
But it's starting to look a little ugly, so you might be better off using a normal loop. Note that I used v
instead of l
for the list variable to reduce confusion with the number 1 (I think l
and O
should be avoided as variable names under any circumstances, even in quick-and-dirty example code).
AndAlso is much like And, except it works like && in C#, C++, etc.
The difference is that if the first clause (the one before AndAlso) is true, the second clause is never evaluated - the compound logical expression is "short circuited".
This is sometimes very useful, e.g. in an expression such as:
If Not IsNull(myObj) AndAlso myObj.SomeProperty = 3 Then
...
End If
Using the old And in the above expression would throw a NullReferenceException if myObj were null.
I was looking for a really simple way to get PHP to send a socket.io message to clients.
This doesn't require any additional PHP libraries - it just uses sockets.
Instead of trying to connect to the websocket interface like so many other solutions, just connect to the node.js server and use .on('data')
to receive the message.
Then, socket.io
can forward it along to clients.
Detect a connection from your PHP server in Node.js like this:
//You might have something like this - just included to show object setup
var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.on("connection", function(s) {
//If connection is from our server (localhost)
if(s.remoteAddress == "::ffff:127.0.0.1") {
s.on('data', function(buf) {
var js = JSON.parse(buf);
io.emit(js.msg,js.data); //Send the msg to socket.io clients
});
}
});
Here's the incredibly simple php code - I wrapped it in a function - you may come up with something better.
Note that 8080
is the port to my Node.js server - you may want to change.
function sio_message($message, $data) {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, '127.0.0.1', 8080);
if(!$result) {
die('cannot connect '.socket_strerror(socket_last_error()).PHP_EOL);
}
$bytes = socket_write($socket, json_encode(Array("msg" => $message, "data" => $data)));
socket_close($socket);
}
You can use it like this:
sio_message("chat message","Hello from PHP!");
You can also send arrays which are converted to json and passed along to clients.
sio_message("DataUpdate",Array("Data1" => "something", "Data2" => "something else"));
This is a useful way to "trust" that your clients are getting legitimate messages from the server.
You can also have PHP pass along database updates without having hundreds of clients query the database.
I wish I'd found this sooner - hope this helps!
You can query the actual number of rows with
SELECT Count(*) FROM tblNamesee https://www.w3schools.com/sql/sql_count_avg_sum.asp
There are a few great examples:
This has also been covered before in this Stack Overflow question.
NuGet Google reCAPTCHA V2 for MVC 4 and 5
You can also apply TR classes: info, error, warning, or success.
I think you hit the same issue as discussed in this post. You forgot to escape your \
character.
Before new gallery access in KitKat I got my real path in sdcard with this method
That was never reliable. There is no requirement that the Uri
that you are returned from an ACTION_GET_CONTENT
or ACTION_PICK
request has to be indexed by the MediaStore
, or even has to represent a file on the file system. The Uri
could, for example, represent a stream, where an encrypted file is decrypted for you on the fly.
How could I manage to obtain the real path in sdcard?
There is no requirement that there is a file corresponding to the Uri
.
Yes, I really need a path
Then copy the file from the stream to your own temporary file, and use it. Better yet, just use the stream directly, and avoid the temporary file.
I have changed my Intent.ACTION_GET_CONTENT for Intent.ACTION_PICK
That will not help your situation. There is no requirement that an ACTION_PICK
response be for a Uri
that has a file on the filesystem that you can somehow magically derive.
function deleteItem(this) {
if (confirm("Are you sure?")) {
$(this).remove();
}
return false;
}
You can also use jquery modalin same way
JQuery version
Are you sure? $(document).ready(function() {
$("#dialog-box").dialog({
autoOpen: false,
modal: true
});
$(".close").click(function(e) {
var currentElem = $(this);
$("#dialog-box").dialog({
buttons : {
"Confirm" : function() {
currentElem.remove()
},
"Cancel" : function() {
$(this).dialog("close");
}
}
});
$("#dialog-box").dialog("open");
});
});
I like @Eduardo's answer and I liked the accepted answer. I like to get back a boolean from something like this, so I wrote it up for you guys.
CREATE FUNCTION dbo.DatabaseExists(@dbname nvarchar(128))
RETURNS bit
AS
BEGIN
declare @result bit = 0
SELECT @result = CAST(
CASE WHEN db_id(@dbname) is not null THEN 1
ELSE 0
END
AS BIT)
return @result
END
GO
Now you can use it like this:
select [dbo].[DatabaseExists]('master') --returns 1
select [dbo].[DatabaseExists]('slave') --returns 0
As mentioned in all other answers, the keyword continue
will skip to the end of the current iteration.
Additionally you can label your loop starts and then use continue [labelname];
or break [labelname];
to control what's going on in nested loops:
loop1: for (int i = 1; i < 10; i++) {
loop2: for (int j = 1; j < 10; j++) {
if (i + j == 10)
continue loop1;
System.out.print(j);
}
System.out.println();
}
<?php
$array = array (0 =>
array (
'id' => '20110209172713',
'Date' => '2011-02-09',
'Weight' => '200',
),
1 =>
array (
'id' => '20110209172747',
'Date' => '2011-02-09',
'Weight' => '180',
),
2 =>
array (
'id' => '20110209172827',
'Date' => '2011-02-09',
'Weight' => '175',
),
3 =>
array (
'id' => '20110211204433',
'Date' => '2011-02-11',
'Weight' => '195',
),
);
foreach ($array as $key => $value) {
$result[$key] = $value['Weight'];
}
$min = min($result);
$max = max($result);
echo " The array in Minnumum number :".$min."<br/>";
echo " The array in Maximum number :".$max."<br/>";
?>
Solved, this is how your parse their html results:
table = soup.find("table", { "class" : "lineItemsTable" })
for row in table.findAll("tr"):
cells = row.findAll("td")
if len(cells) == 9:
summons = cells[1].find(text=True)
plateType = cells[2].find(text=True)
vDate = cells[3].find(text=True)
location = cells[4].find(text=True)
borough = cells[5].find(text=True)
vCode = cells[6].find(text=True)
amount = cells[7].find(text=True)
print amount
Depending on why you are doing this, using a std::set might be a better idea than std::vector.
It allows each element to occur only once. If you add it multiple times, there will only be one instance to erase anyway. This will make the erase operation trivial. The erase operation will also have lower time complexity than on the vector, however, adding elements is slower on the set so it might not be much of an advantage.
This of course won't work if you are interested in how many times an element has been added to your vector or the order the elements were added.
This can also cause the issue
Break Point icon at top right should be blue like this
Should not grey like this
Here's my take on it. I needed to create a URL by collecting the value from a text box , when the user presses a Submit button.
<html>_x000D_
<body>_x000D_
_x000D_
Hi everyone_x000D_
_x000D_
<p id="result"></p>_x000D_
_x000D_
<textarea cols="40" id="SearchText" rows="2"></textarea>_x000D_
_x000D_
<button onclick="myFunction()" type="button">Submit!</button>_x000D_
_x000D_
<script>_x000D_
function myFunction() {_x000D_
var result = document.getElementById("SearchText").value;_x000D_
document.getElementById("result").innerHTML = result;_x000D_
document.getElementById("abc").href="http://arindam31.pythonanywhere.com/hello/" + result;_x000D_
} _x000D_
</script>_x000D_
_x000D_
_x000D_
<a href="#" id="abc">abc</a>_x000D_
_x000D_
</body>_x000D_
<html>
_x000D_
From S. Prakash, found at the MySQL forum:
SELECT table_schema "database name",
sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema;
Or in a single line for easier copy-pasting:
SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema;
F# is not yet-another-programming-language if you are comparing it to C#, C++, VB. C#, C, VB are all imperative or procedural programming languages. F# is a functional programming language.
Two main benefits of functional programming languages (compared to imperative languages) are 1. that they don't have side-effects. This makes mathematical reasoning about properties of your program a lot easier. 2. that functions are first class citizens. You can pass functions as parameters to another functions just as easily as you can other values.
Both imperative and functional programming languages have their uses. Although I have not done any serious work in F# yet, we are currently implementing a scheduling component in one of our products based on C# and are going to do an experiment by coding the same scheduler in F# as well to see if the correctness of the implementation can be validated more easily than with the C# equivalent.
At the answer from @squicc
if you amend
this line: $topDir = Get-ChildItem -directory "C:\test" with -force
then you will be able to see the hidden directories also. Without this, the size will be different when you run the solution from inside or outside the folder.
Do not use more than one style attribute. Just seperate styles in the style attribute with ;
It is a block of inline CSS, so think of this as you would do CSS in a separate stylesheet.
So in this case its:
style="height:100px;width:100px;"
You can use this for any CSS style, so if you wanted to change the colour of the text to white:
style="height:100px;width:100px;color:#ffffff"
and so on.
However, it is worth using inline CSS sparingly, as it can make code less manageable in future. Using an external stylesheet may be a better option for this. It depends really on your requirements. Inline CSS does make for quicker coding.
They do now, with latest version of MVC (and jquery validate packages). mvc51-release-notes#Unobtrusive
Thanks to this answer for pointing it out!
A variant of Marks (excellent) answer
Hope this helps
[TestFixture]
public class RijndaelHelperTests
{
[Test]
public void UseCase()
{
//These two values should not be hard coded in your code.
byte[] key = {251, 9, 67, 117, 237, 158, 138, 150, 255, 97, 103, 128, 183, 65, 76, 161, 7, 79, 244, 225, 146, 180, 51, 123, 118, 167, 45, 10, 184, 181, 202, 190};
byte[] vector = {214, 11, 221, 108, 210, 71, 14, 15, 151, 57, 241, 174, 177, 142, 115, 137};
using (var rijndaelHelper = new RijndaelHelper(key, vector))
{
var encrypt = rijndaelHelper.Encrypt("StringToEncrypt");
var decrypt = rijndaelHelper.Decrypt(encrypt);
Assert.AreEqual("StringToEncrypt", decrypt);
}
}
}
public class RijndaelHelper : IDisposable
{
Rijndael rijndael;
UTF8Encoding encoding;
public RijndaelHelper(byte[] key, byte[] vector)
{
encoding = new UTF8Encoding();
rijndael = Rijndael.Create();
rijndael.Key = key;
rijndael.IV = vector;
}
public byte[] Encrypt(string valueToEncrypt)
{
var bytes = encoding.GetBytes(valueToEncrypt);
using (var encryptor = rijndael.CreateEncryptor())
using (var stream = new MemoryStream())
using (var crypto = new CryptoStream(stream, encryptor, CryptoStreamMode.Write))
{
crypto.Write(bytes, 0, bytes.Length);
crypto.FlushFinalBlock();
stream.Position = 0;
var encrypted = new byte[stream.Length];
stream.Read(encrypted, 0, encrypted.Length);
return encrypted;
}
}
public string Decrypt(byte[] encryptedValue)
{
using (var decryptor = rijndael.CreateDecryptor())
using (var stream = new MemoryStream())
using (var crypto = new CryptoStream(stream, decryptor, CryptoStreamMode.Write))
{
crypto.Write(encryptedValue, 0, encryptedValue.Length);
crypto.FlushFinalBlock();
stream.Position = 0;
var decryptedBytes = new Byte[stream.Length];
stream.Read(decryptedBytes, 0, decryptedBytes.Length);
return encoding.GetString(decryptedBytes);
}
}
public void Dispose()
{
if (rijndael != null)
{
rijndael.Dispose();
}
}
}
Slightly quicker than removing each one individually:
$('#myTable').empty()
Technically, this will remove thead
, tfoot
and tbody
elements too.
This works for me.
@Test
public void cloneTest() {
List<Part> parts = new ArrayList<Part>();
Part part1 = new Part(1);
parts.add(part1);
Part part2 = new Part(2);
parts.add(part2);
try {
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(parts);
List<Part> cloneParts = objectMapper.readValue(jsonStr, new TypeReference<ArrayList<Part>>() {});
} catch (Exception e) {
//fail("failed.");
e.printStackTrace();
}
//TODO: Assert: compare both list values.
}
Definitive answer: import os
and use os.path
. do not import os.path
directly.
From the documentation of the module itself:
>>> import os
>>> help(os.path)
...
Instead of importing this module directly, import os and refer to
this module as os.path. The "os.path" name is an alias for this
module on Posix systems; on other systems (e.g. Mac, Windows),
os.path provides the same operations in a manner specific to that
platform, and is an alias to another module (e.g. macpath, ntpath).
...
This is my code, to start/stop a Windows service using SC
command. If the service fails to start/stop, it will print a log info. You can try it by Inno Setup.
{ start a service }
Exec(ExpandConstant('{cmd}'), '/C sc start ServiceName', '',
SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc start ServiceName:'+SysErrorMessage(ResultCode));
{ stop a service }
Exec(ExpandConstant('{cmd}'), '/C sc stop ServiceName', '',
SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc stop ServiceName:'+SysErrorMessage(ResultCode));
Technically $('<div></div>')
will 'create' a div
element (or more specifically a DIV DOM element) but won't add it to your HTML document. You will then need to use that in combination with the other answers to actually do anything useful with it (such as using the append()
method or such like).
The manipulation documentation gives you all the various options on how to add new elements.
The Location
property has type Point
which is a struct.
Instead of trying to modify the existing Point
, try assigning a new Point
object:
this.balancePanel.Location = new Point(
this.optionsPanel.Location.X,
this.balancePanel.Location.Y
);
Instead of comparison methods you may want to just define several types of "Comparator" subclasses inside the Person class. That way you can pass them into standard Collections sorting methods.
This was what fixed it for me. (I had already tried toggling the capabilities on/off, recreating the provisioning profile, etc).
In the Build Settings tab, in Code Signing Entitlements, my .entitlements file wasn't link for all sections. Once I added it to the Any SDK section, the error was resolved.
In your StyleSheet, simply put:
width: '80%';
instead of:
width: 80%;
Keep Coding........ :)
It's possible that the error didn't occur in the dot product, but after. For example try this
a = np.random.randn(12,1)
b = np.random.randn(1,5)
c = np.random.randn(5,12)
d = np.dot(a,b) * c
np.dot(a,b) will be fine; however np.dot(a, b) * c is clearly wrong (12x1 X 1x5 = 12x5 which cannot element-wise multiply 5x12) but numpy will give you
ValueError: operands could not be broadcast together with shapes (12,1) (1,5)
The error is misleading; however there is an issue on that line.
If you are using ajax then (making it as simple as possible)
Add your loading gif image to html and make it hidden (using style in html itself now, you can add it to separate CSS):
<img src="path\to\loading\gif" id="img" style="display:none"/ >
Show the image when button is clicked and hide it again on success function
$('#buttonID').click(function(){
$('#img').show(); //<----here
$.ajax({
....
success:function(result){
$('#img').hide(); //<--- hide again
}
}
Make sure you hide the image on ajax error callbacks too to make sure the gif hides even if the ajax fails.
I had the same problem. Just after enabling Internet Virtualization from BIOS. After that let the system boot and install HAXM once again. Now emulator will run faster than before and HAXM will work. Enjoy!!
Basically, yes. You write alert('<?php echo($phpvariable); ?>');
There are sure other ways to interoperate, but none of which i can think of being as simple (or better) as the above.
I was able to use Paco Zarate's solution and it works beautifully. I did have to add one line ("SET ANSI_WARNINGS ON"), but that may be something unique to the way I used it or called it. There is a problem with my usage and I hope someone can help me with it:
The solution works only with an actual SQL table. I tried it with a temporary table and also an in-memory (declared) table but it doesn't work with those. So in my calling code I create a table on my SQL database and then call SQLTranspose. Again, it works great. It's just what I want. Here's my problem:
In order for the overall solution to be truly dynamic I need to create that table where I temporarily store the prepared information that I'm sending to SQLTranspose "on the fly", and then delete that table once SQLTranspose is called. The table deletion is presenting a problem with my ultimate implementation plan. The code needs to run from an end-user application (a button on a Microsoft Access form/menu). When I use this SQL process (create a SQL table, call SQLTranspose, delete SQL table) the end user application hits an error because the SQL account used does not have the rights to drop a table.
So I figure there are a few possible solutions:
Find a way to make SQLTranspose work with a temporary table or a declared table variable.
Figure out another method for the transposition of rows and columns that doesn't require an actual SQL table.
Figure out an appropriate method of allowing the SQL account used by my end users to drop a table. It's a single shared SQL account coded into my Access application. It appears that permission is a dbo-type privilege that cannot be granted.
I recognize that some of this may warrant another, separate thread and question. However, since there is a possibility that one solution may be simply a different way to do the transposing of rows and columns I'll make my first post here in this thread.
EDIT: I also did replace sum(value) with max(value) in the 6th line from the end, as Paco suggested.
EDIT:
I figured out something that works for me. I don't know if it's the best answer or not.
I have a read-only user account that is used to execute strored procedures and therefore generate reporting output from a database. Since the SQLTranspose function I created will only work with a "legitimate" table (not a declared table and not a temporary table) I had to figure out a way for a read-only user account to create (and then later delete) a table.
I reasoned that for my purposes it's okay for the user account to be allowed to create a table. The user still could not delete the table though. My solution was to create a schema where the user account is authorized. Then whenever I create, use, or delete that table refer it with the schema specified.
I first issued this command from a 'sa' or 'sysadmin' account: CREATE SCHEMA ro AUTHORIZATION
When any time I refer to my "tmpoutput" table I specify it like this example:
drop table ro.tmpoutput
I solved it this way on a Mac. I used Homebrew to install the latest version of gcc/g++. They land in /usr/local/bin with includes in /usr/local/include.
I CD'd into /usr/local/bin and made a symlink from g++@7whatever to just g++ cause that @ bit is annoying.
Then I went to MyProject -> Properties -> C/C++ Build -> Settings -> GCC C++ Compiler and changed the command from "g++" to "/usr/local/bin/g++". If you decide not to make the symbolic link, you can be more specific.
Do the same thing for the linker.
Apply and Apply and Close. Let it rebuild the index. For a while, it showed a daunting number of errors, but I think that was while building indexes. While I was figuring out the errors, they all disappeared without further action.
I think without verifying that you could also go into Eclipse -> Properties -> C/C++ -> Core Build Toolchains and edit those with different paths, but I'm not sure what that will do.
On Windows it's holding down Alt while box selecting. Once you have your selection then attempt your edit.
SELECT CONVERT(date, GETDATE())
I can't remember where I found this, but it seems like the best and the least process intensive to me:
def random_string(length=10)
chars = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ0123456789'
password = ''
length.times { password << chars[rand(chars.size)] }
password
end
You can simply delete this folder
/Library/Developer/CommandLineTools
Please note: This is the root /Library, not user's ~/Library).
Find below link this solution is The best https://www.samieltamawy.com/how-to-fix-the-camera-intent-rotated-image-in-android/
Instead of IN
we can use ANY
with arrays casted to enum array, for example:
create type example_enum as enum (
'ENUM1', 'ENUM2'
);
create table example_table (
id integer,
enum_field example_enum
);
select
*
from
example_table t
where
t.enum_field = any(array['ENUM1', 'ENUM2']::example_enum[]);
Or we can still use 'IN' clause, but first, we should 'unnest' it:
select
*
from
example_table t
where
t.enum_field in (select unnest(array['ENUM1', 'ENUM2']::example_enum[]));
Example: https://www.db-fiddle.com/f/LaUNi42HVuL2WufxQyEiC/0
This is going to be largely dependent on the RDBMS you're using, and whether a .NET option even exists for that RDBMS.
If you're using SQL Server, use the SqlBulkCopy class.
For other database vendors, try googling for them specifically. For example a search for ".NET Bulk insert into Oracle" turned up some interesting results, including this link back to Stack Overflow: Bulk Insert to Oracle using .NET.
Use a T-SQL IF
:
IF @ABC IS NOT NULL AND @ABC != -1
UPDATE [TABLE_NAME] SET XYZ=@ABC
Take a look at the MSDN docs.
<object>.__class__.__name__
How to set default values in twig: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Or if you don't want it to display when null:
{{ my_var | default("") }}
I believe this is the simplest example:
header := w.Header()
header.Add("Access-Control-Allow-Origin", "*")
header.Add("Access-Control-Allow-Methods", "DELETE, POST, GET, OPTIONS")
header.Add("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With")
You can also add a header for Access-Control-Max-Age
and of course you can allow any headers and methods that you wish.
Finally you want to respond to the initial request:
if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusOK)
return
}
Edit (June 2019): We now use gorilla for this. Their stuff is more actively maintained and they have been doing this for a really long time. Leaving the link to the old one, just in case.
Old Middleware Recommendation below: Of course it would probably be easier to just use middleware for this. I don't think I've used it, but this one seems to come highly recommended.
I also had this error with a SQL Server authenticated user
I tried some of the fixes, but they did not work.
The solution in my case was to configure its "Server Authentication Mode" to allow SQL Server authentication, under Management Studio: Properties/Security.
I had similar problem except that it happened without installing any plugin. I begin to get this dialog about source control every time I open the project + tons of windows popping up and floating which I had to close one by one.
Windows -> Rest Windows Layout, fixed it for me without any problems. It does bring the default setting which I don't mind at all :)
when you perform y=x()
you are actually assigning y to the result of calling the function object x
and the function has a return value of None
. Function calls in python are performed using ()
. To assign x to y
so you can call y
just like you would x
you assign the function object x to y like y=x
and call the function using y()
Your method (placing script before the closing body tag)
<script>
myFunction()
</script>
</body>
</html>
is a reliable way to support old and new browsers.
A bit old but just in case someone new is looking for a solution, updating your PHP version can fix the issue.
Also you should be committing your composer.lock file and doing a composer install on a production environment which is less resource intensive.
More details here: https://github.com/composer/composer/issues/1898#issuecomment-23453850
amap.find
returns amap::end
when it does not find what you're looking for -- you're supposed to check for that.
You need to use linecolor instead of lc, like:
set style line 1 lt 1 lw 3 pt 3 linecolor rgb "red"
"help set style line" gives you more info.
Here is an option using a for
loop by groups rather by rows (like OP did)
for (i in unique(df$cat)) df$num[df$cat == i] <- seq_len(sum(df$cat == i))
Use the fact that awk
splits the lines in fields based on a field separator, that you can define. Hence, defining the field separator to /
you can say:
awk -F "/" '{print $NF}' input
as NF
refers to the number of fields of the current record, printing $NF
means printing the last one.
So given a file like this:
/home/parent/child1/child2/child3/filename
/home/parent/child1/child2/filename
/home/parent/child1/filename
This would be the output:
$ awk -F"/" '{print $NF}' file
filename
filename
filename
I managed with a simple $(...).click(); with JQuery 1.6.1
What do you mean by ‘hang state’? Typically, a process that is unresponsive and using 100% of a CPU is stuck in an endless loop. But there's no way to determine whether that has happened or whether the process might not eventually reach a loop exit state and carry on.
Desktop hang detectors just work by sending a message to the application's event loop and seeing if there's any response. If there's not for a certain amount of time they decide the app has ‘hung’... but it's entirely possible it was just doing something complicated and will come back to life in a moment once it's done. Anyhow, that's not something you can use for any arbitrary process.
One to one (1-1) relationship: This is relationship between primary & foreign key (primary key relating to foreign key only one record). this is one to one relationship.
One to Many (1-M) relationship: This is also relationship between primary & foreign keys relationships but here primary key relating to multiple records (i.e. Table A have book info and Table B have multiple publishers of one book).
Many to Many (M-M): Many to many includes two dimensions, explained fully as below with sample.
-- This table will hold our phone calls.
CREATE TABLE dbo.PhoneCalls
(
ID INT IDENTITY(1, 1) NOT NULL,
CallTime DATETIME NOT NULL DEFAULT GETDATE(),
CallerPhoneNumber CHAR(10) NOT NULL
)
-- This table will hold our "tickets" (or cases).
CREATE TABLE dbo.Tickets
(
ID INT IDENTITY(1, 1) NOT NULL,
CreatedTime DATETIME NOT NULL DEFAULT GETDATE(),
Subject VARCHAR(250) NOT NULL,
Notes VARCHAR(8000) NOT NULL,
Completed BIT NOT NULL DEFAULT 0
)
-- This table will link a phone call with a ticket.
CREATE TABLE dbo.PhoneCalls_Tickets
(
PhoneCallID INT NOT NULL,
TicketID INT NOT NULL
)
You need to give the same style of the fixed element and its parent element. One of these examples is created with max widths and in the other example with paddings.
* {_x000D_
box-sizing: border-box_x000D_
}_x000D_
body {_x000D_
margin: 0;_x000D_
}_x000D_
.container {_x000D_
max-width: 500px;_x000D_
height: 100px;_x000D_
width: 100%;_x000D_
margin-left: auto;_x000D_
margin-right: auto;_x000D_
background-color: lightgray;_x000D_
}_x000D_
.content {_x000D_
max-width: 500px;_x000D_
width: 100%;_x000D_
position: fixed;_x000D_
}_x000D_
h2 {_x000D_
border: 1px dotted black;_x000D_
padding: 10px;_x000D_
}_x000D_
.container-2 {_x000D_
height: 100px;_x000D_
padding-left: 32px;_x000D_
padding-right: 32px;_x000D_
margin-top: 10px;_x000D_
background-color: lightgray;_x000D_
}_x000D_
.content-2 {_x000D_
width: 100%;_x000D_
position: fixed;_x000D_
left: 0;_x000D_
padding-left: 32px;_x000D_
padding-right: 32px;_x000D_
}
_x000D_
<div class="container">_x000D_
<div class="content">_x000D_
<h2>container with max widths</h2>_x000D_
</div>_x000D_
</div>_x000D_
_x000D_
<div class="container-2">_x000D_
<div class="content-2">_x000D_
<div>_x000D_
<h2>container with paddings</h2>_x000D_
</div>_x000D_
</div>_x000D_
</div>
_x000D_
There are many methods :
CSS
<div style="width:200px;height:100px;position:absolute;left:50%;top:50%;
margin-left:-100px;margin-top:-50px;">
<!–content–>
</div>
2 . Center horizontally and vertically a single line of text
CSS
<div style="width:400px;height:200px;text-align:center;line-height:200px;">
<!–content–>
</div>
3 . Center horizontal and vertical align of an element with no specific measure
CSS
<div style="display:table;height:300px;text-align:center;">
<div style="display:table-cell;vertical-align:middle;">
<!–content–>
</div>
</div>
As @Alok mentioned in the comments, you can do react-native eject
to generate the ios
and android
folders. But you will need an app.json
in your project first.
{"name": "example", "displayName": "Example"}
You can specify the destination directory as second parameter of the git clone
command, so you can do:
git clone <remote> .
This will clone the repository directly in the current local directory.
I encountered the same problem, just sharing what I found out. Might help you and others...
Try this on your layout.add the line below in your EditText
.
android:inputType="textCapWords|textCapSentences"
works fine on me.. hope it works also on you...
While @Eli is quite correct that there usually isn't much of a need to do it, it is possible. savefig
takes a bbox_inches
argument that can be used to selectively save only a portion of a figure to an image.
Here's a quick example:
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
# Make an example plot with two subplots...
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(range(10), 'b-')
ax2 = fig.add_subplot(2,1,2)
ax2.plot(range(20), 'r^')
# Save the full figure...
fig.savefig('full_figure.png')
# Save just the portion _inside_ the second axis's boundaries
extent = ax2.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
fig.savefig('ax2_figure.png', bbox_inches=extent)
# Pad the saved area by 10% in the x-direction and 20% in the y-direction
fig.savefig('ax2_figure_expanded.png', bbox_inches=extent.expanded(1.1, 1.2))
The full figure:
Area inside the second subplot:
Area around the second subplot padded by 10% in the x-direction and 20% in the y-direction:
String input = "2,1,3,4,5,10,100";
String[] strings = input.split(",");
int[] numbers = new int[strings.length];
for (int i = 0; i < numbers.length; i++)
{
numbers[i] = Integer.parseInt(strings[i]);
}
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));
better to use touchstart
event with .on()
jQuery method:
$(window).load(function() { // better to use $(document).ready(function(){
$('.List li').on('click touchstart', function() {
$('.Div').slideDown('500');
});
});
And i don't understand why you are using $(window).load()
method because it waits for everything on a page to be loaded, this tend to be slow, while you can use $(document).ready()
method which does not wait for each element on the page to be loaded first.
You can do the following while read
loop, that will be fed by the result of the grep
command using the so called process substitution:
while IFS= read -r result
do
#whatever with value $result
done < <(grep "xyz" abc.txt)
This way, you don't have to store the result in a variable, but directly "inject" its output to the loop.
Note the usage of IFS=
and read -r
according to the recommendations in BashFAQ/001: How can I read a file (data stream, variable) line-by-line (and/or field-by-field)?:
The -r option to read prevents backslash interpretation (usually used as a backslash newline pair, to continue over multiple lines or to escape the delimiters). Without this option, any unescaped backslashes in the input will be discarded. You should almost always use the -r option with read.
In the scenario above IFS= prevents trimming of leading and trailing whitespace. Remove it if you want this effect.
Regarding the process substitution, it is explained in the bash hackers page:
Process substitution is a form of redirection where the input or output of a process (some sequence of commands) appear as a temporary file.
If you are binding to an actual enum property on your ViewModel, not a int representation of an enum, things get tricky. I found it is necessary to bind to the string representation, NOT the int value as is expected in all of the above examples.
You can tell if this is the case by binding a simple textbox to the property you want to bind to on your ViewModel. If it shows text, bind to the string. If it shows a number, bind to the value. Note I have used Display twice which would normally be an error, but it's the only way it works.
<ComboBox SelectedValue="{Binding ElementMap.EdiDataType, Mode=TwoWay}"
DisplayMemberPath="Display"
SelectedValuePath="Display"
ItemsSource="{Binding Source={core:EnumToItemsSource {x:Type edi:EdiDataType}}}" />
Greg
You Can use https://github.com/Flipboard/FLAnimatedImage
#import "FLAnimatedImage.h"
NSData *dt=[NSData dataWithContentsOfFile:path];
imageView1 = [[FLAnimatedImageView alloc] init];
FLAnimatedImage *image1 = [FLAnimatedImage animatedImageWithGIFData:dt];
imageView1.animatedImage = image1;
imageView1.frame = CGRectMake(0, 5, 168, 80);
[self.view addSubview:imageView1];
You can remove the existing options by using the empty
method, and then add your new options:
var option = $('<option></option>').attr("value", "option value").text("Text");
$("#selectId").empty().append(option);
If you have your new options in an object you can:
var newOptions = {"Option 1": "value1",
"Option 2": "value2",
"Option 3": "value3"
};
var $el = $("#selectId");
$el.empty(); // remove old options
$.each(newOptions, function(key,value) {
$el.append($("<option></option>")
.attr("value", value).text(key));
});
Edit: For removing the all the options but the first, you can use the :gt
selector, to get all the option
elements with index greater than zero and remove
them:
$('#selectId option:gt(0)').remove(); // remove all options, but not the first
Here's something I quickly just made and it should perform far better than File.getName().endsWith(".xxxx");
import java.io.File;
import java.io.FileFilter;
public class ExtensionsFilter implements FileFilter
{
private char[][] extensions;
private ExtensionsFilter(String[] extensions)
{
int length = extensions.length;
this.extensions = new char[length][];
for (String s : extensions)
{
this.extensions[--length] = s.toCharArray();
}
}
@Override
public boolean accept(File file)
{
char[] path = file.getPath().toCharArray();
for (char[] extension : extensions)
{
if (extension.length > path.length)
{
continue;
}
int pStart = path.length - 1;
int eStart = extension.length - 1;
boolean success = true;
for (int i = 0; i <= eStart; i++)
{
if ((path[pStart - i] | 0x20) != (extension[eStart - i] | 0x20))
{
success = false;
break;
}
}
if (success)
return true;
}
return false;
}
}
Here's an example for various images formats.
private static final ExtensionsFilter IMAGE_FILTER =
new ExtensionsFilter(new String[] {".png", ".jpg", ".bmp"});
This is a highly inefficient way of doing it. You can use the merge
statement and then there's no need for cursors, looping or (if you can do without) PL/SQL.
MERGE INTO studLoad l
USING ( SELECT studId, studName FROM student ) s
ON (l.studId = s.studId)
WHEN MATCHED THEN
UPDATE SET l.studName = s.studName
WHERE l.studName != s.studName
WHEN NOT MATCHED THEN
INSERT (l.studID, l.studName)
VALUES (s.studId, s.studName)
Make sure you commit
, once completed, in order to be able to see this in the database.
To actually answer your question I would do it something like as follows. This has the benefit of doing most of the work in SQL and only updating based on the rowid, a unique address in the table.
It declares a type, which you place the data within in bulk, 10,000 rows at a time. Then processes these rows individually.
However, as I say this will not be as efficient as merge
.
declare
cursor c_data is
select b.rowid as rid, a.studId, a.studName
from student a
left outer join studLoad b
on a.studId = b.studId
and a.studName <> b.studName
;
type t__data is table of c_data%rowtype index by binary_integer;
t_data t__data;
begin
open c_data;
loop
fetch c_data bulk collect into t_data limit 10000;
exit when t_data.count = 0;
for idx in t_data.first .. t_data.last loop
if t_data(idx).rid is null then
insert into studLoad (studId, studName)
values (t_data(idx).studId, t_data(idx).studName);
else
update studLoad
set studName = t_data(idx).studName
where rowid = t_data(idx).rid
;
end if;
end loop;
end loop;
close c_data;
end;
/
According to kisp solution this is my edited version working async:
Class WebConnection.cs
internal class WebConnection : WebClient
{
internal int Timeout { get; set; }
protected override WebRequest GetWebRequest(Uri Address)
{
WebRequest WebReq = base.GetWebRequest(Address);
WebReq.Timeout = Timeout * 1000 // Seconds
return WebReq;
}
}
The async Task
private async Task GetDataAsyncWithTimeout()
{
await Task.Run(() =>
{
using (WebConnection webClient = new WebConnection())
{
webClient.Timeout = 5; // Five seconds
webClient.DownloadData("https://www.yourwebsite.com");
}
});
} // await GetDataAsyncWithTimeout()
Else, if you don't want to use async:
private void GetDataSyncWithTimeout()
{
using (WebConnection webClient = new WebConnection())
{
webClient.Timeout = 5; // Five seconds
webClient.DownloadData("https://www.yourwebsite.com");
}
} // GetDataSyncWithTimeout()
I built on the last answer and used display:table
for an outer div, and display:table-cell
for inner divs.
This was the only thing that worked for me using CSS.
Use this
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://www.someplace.com");
ResponseHandler<String> resHandler = new BasicResponseHandler();
String page = httpClient.execute(httpGet, resHandler);
This can be used to grab the whole webpage as a string of html, i.e., "<html>...</html>"
Note
You need to declare the following 'uses-permission' in the android manifest xml file
... answer by @Squonk here
And also check this answer
You can do this,
User.query.filter_by(id=123).delete()
or
User.query.filter(User.id == 123).delete()
Make sure to commit
for delete()
to take effect.
if you are running nvm you might want to run nvm use <desired-node-version>
This keeps node consistent with npm
It is typically considered good practice to default to the lowest visibility required as this promotes data encapsulation and good interface design. When considering member variable and method visibility think about the role the member plays in the interaction with other objects.
If you "code to an interface rather than implementation" then it's usually pretty straightforward to make visibility decisions. In general, variables should be private or protected unless you have a good reason to expose them. Use public accessors (getters/setters) instead to limit and regulate access to a class's internals.
To use a car as an analogy, things like speed, gear, and direction would be private instance variables. You don't want the driver to directly manipulate things like air/fuel ratio. Instead, you expose a limited number of actions as public methods. The interface to a car might include methods such as accelerate()
, deccelerate()
/brake()
, setGear()
, turnLeft()
, turnRight()
, etc.
The driver doesn't know nor should he care how these actions are implemented by the car's internals, and exposing that functionality could be dangerous to the driver and others on the road. Hence the good practice of designing a public interface and encapsulating the data behind that interface.
This approach also allows you to alter and improve the implementation of the public methods in your class without breaking the interface's contract with client code. For example, you could improve the accelerate()
method to be more fuel efficient, yet the usage of that method would remain the same; client code would require no changes but still reap the benefits of your efficiency improvement.
Edit: Since it seems you are still in the midst of learning object oriented concepts (which are much more difficult to master than any language's syntax), I highly recommend picking up a copy of PHP Objects, Patterns, and Practice by Matt Zandstra. This is the book that first taught me how to use OOP effectively, rather than just teaching me the syntax. I had learned the syntax years beforehand, but that was useless without understanding the "why" of OOP.
I love sed
's capability to deal with regex groups:
> var="someletters_12345_moreletters.ext"
> digits=$( echo $var | sed "s/.*_\([0-9]\+\).*/\1/p" -n )
> echo $digits
12345
A slightly more general option would be not to assume that you have an underscore _
marking the start of your digits sequence, hence for instance stripping off all non-numbers you get before your sequence: s/[^0-9]\+\([0-9]\+\).*/\1/p
.
> man sed | grep s/regexp/replacement -A 2
s/regexp/replacement/
Attempt to match regexp against the pattern space. If successful, replace that portion matched with replacement. The replacement may contain the special character & to
refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
More on this, in case you're not too confident with regexps:
s
is for _s_ubstitute[0-9]+
matches 1+ digits\1
links to the group n.1 of the regex output (group 0 is the whole match, group 1 is the match within parentheses in this case)p
flag is for _p_rintingAll escapes \
are there to make sed
's regexp processing work.
Recommendation:
when you have more than one condition with and
and or
is better separate with ()
to avoid verification problems
<c:if test="${(not validID) and (addressIso == 'US' or addressIso == 'BR')}">
Use a semicolon
OpenFileDialog of = new OpenFileDialog();
of.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
Essentially you need to do an argsort
, what implementation you need depends if you want to use external libraries (e.g. NumPy) or if you want to stay pure-Python without dependencies.
The question you need to ask yourself is: Do you want the
Unfortunately the example in the question doesn't make it clear what is desired because both will give the same result:
>>> arr = np.array([1, 2, 3, 100, 5])
>>> np.argsort(np.argsort(arr))
array([0, 1, 2, 4, 3], dtype=int64)
>>> np.argsort(arr)
array([0, 1, 2, 4, 3], dtype=int64)
argsort
implementationIf you have NumPy at your disposal you can simply use the function numpy.argsort
or method numpy.ndarray.argsort
.
An implementation without NumPy was mentioned in some other answers already, so I'll just recap the fastest solution according to the benchmark answer here
def argsort(l):
return sorted(range(len(l)), key=l.__getitem__)
To get the indices that would sort the array/list you can simply call argsort
on the array or list. I'm using the NumPy versions here but the Python implementation should give the same results
>>> arr = np.array([3, 1, 2, 4])
>>> np.argsort(arr)
array([1, 2, 0, 3], dtype=int64)
The result contains the indices that are needed to get the sorted array.
Since the sorted array would be [1, 2, 3, 4]
the argsorted array contains the indices of these elements in the original.
1
and it is at index 1
in the original so the first element of the result is 1
. 2
is at index 2
in the original so the second element of the result is 2
. 3
is at index 0
in the original so the third element of the result is 0
. 4
and it is at index 3
in the original so the last element of the result is 3
.In this case you would need to apply argsort
twice:
>>> arr = np.array([3, 1, 2, 4])
>>> np.argsort(np.argsort(arr))
array([2, 0, 1, 3], dtype=int64)
In this case :
3
, which is the third largest value so it would have index 2
in the sorted array/list so the first element is 2
.1
, which is the smallest value so it would have index 0
in the sorted array/list so the second element is 0
.2
, which is the second-smallest value so it would have index 1
in the sorted array/list so the third element is 1
.4
which is the largest value so it would have index 3
in the sorted array/list so the last element is 3
.Just place jquery url on the top of your jquery code
like this--
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
Based on Remi answer for Python 2.7+
use this:
from __future__ import print_function
import time
# status generator
def range_with_status(total):
""" iterate from 0 to total and show progress in console """
import sys
n = 0
while n < total:
done = '#' * (n + 1)
todo = '-' * (total - n - 1)
s = '<{0}>'.format(done + todo)
if not todo:
s += '\n'
if n > 0:
s = '\r' + s
print(s, end='\r')
sys.stdout.flush()
yield n
n += 1
# example for use of status generator
for i in range_with_status(50):
time.sleep(0.2)
I see that this topic is almost 6 years old, and we now have new version of Visual studio but I will reply anyway. I had that order problem in Visual Studio 19 and I figured it out by adding capital letter (you can also add small letter) in front of your method name and in alphabetical order like this:
[TestMethod]
public void AName1()
{}
[TestMethod]
public void BName2()
{}
And so on. I know that this doesn't look appealing, but it looks like Visual is sorting your tests in test explorer in alphabetical order, doesn't matter how you write it in your code. Playlist didn't work for me in this case.
Hope that this will help.
As said before modulo isn't sufficient because it skews the distribution. Heres my code which masks off bits and uses them to ensure the distribution isn't skewed.
static uint32_t randomInRange(uint32_t a,uint32_t b) {
uint32_t v;
uint32_t range;
uint32_t upper;
uint32_t lower;
uint32_t mask;
if(a == b) {
return a;
}
if(a > b) {
upper = a;
lower = b;
} else {
upper = b;
lower = a;
}
range = upper - lower;
mask = 0;
//XXX calculate range with log and mask? nah, too lazy :).
while(1) {
if(mask >= range) {
break;
}
mask = (mask << 1) | 1;
}
while(1) {
v = rand() & mask;
if(v <= range) {
return lower + v;
}
}
}
The following simple code lets you look at the distribution:
int main() {
unsigned long long int i;
unsigned int n = 10;
unsigned int numbers[n];
for (i = 0; i < n; i++) {
numbers[i] = 0;
}
for (i = 0 ; i < 10000000 ; i++){
uint32_t rand = random_in_range(0,n - 1);
if(rand >= n){
printf("bug: rand out of range %u\n",(unsigned int)rand);
return 1;
}
numbers[rand] += 1;
}
for(i = 0; i < n; i++) {
printf("%u: %u\n",i,numbers[i]);
}
}
By applying the StickyTableHeaders jQuery plugin to the table, the column headers will stick to the top of the viewport as you scroll down.
Example:
$(function () {_x000D_
$("table").stickyTableHeaders();_x000D_
});_x000D_
_x000D_
/*! Copyright (c) 2011 by Jonas Mosbech - https://github.com/jmosbech/StickyTableHeaders_x000D_
MIT license info: https://github.com/jmosbech/StickyTableHeaders/blob/master/license.txt */_x000D_
_x000D_
;_x000D_
(function ($, window, undefined) {_x000D_
'use strict';_x000D_
_x000D_
var name = 'stickyTableHeaders',_x000D_
id = 0,_x000D_
defaults = {_x000D_
fixedOffset: 0,_x000D_
leftOffset: 0,_x000D_
marginTop: 0,_x000D_
scrollableArea: window_x000D_
};_x000D_
_x000D_
function Plugin(el, options) {_x000D_
// To avoid scope issues, use 'base' instead of 'this'_x000D_
// to reference this class from internal events and functions._x000D_
var base = this;_x000D_
_x000D_
// Access to jQuery and DOM versions of element_x000D_
base.$el = $(el);_x000D_
base.el = el;_x000D_
base.id = id++;_x000D_
base.$window = $(window);_x000D_
base.$document = $(document);_x000D_
_x000D_
// Listen for destroyed, call teardown_x000D_
base.$el.bind('destroyed',_x000D_
$.proxy(base.teardown, base));_x000D_
_x000D_
// Cache DOM refs for performance reasons_x000D_
base.$clonedHeader = null;_x000D_
base.$originalHeader = null;_x000D_
_x000D_
// Keep track of state_x000D_
base.isSticky = false;_x000D_
base.hasBeenSticky = false;_x000D_
base.leftOffset = null;_x000D_
base.topOffset = null;_x000D_
_x000D_
base.init = function () {_x000D_
base.$el.each(function () {_x000D_
var $this = $(this);_x000D_
_x000D_
// remove padding on <table> to fix issue #7_x000D_
$this.css('padding', 0);_x000D_
_x000D_
base.$originalHeader = $('thead:first', this);_x000D_
base.$clonedHeader = base.$originalHeader.clone();_x000D_
$this.trigger('clonedHeader.' + name, [base.$clonedHeader]);_x000D_
_x000D_
base.$clonedHeader.addClass('tableFloatingHeader');_x000D_
base.$clonedHeader.css('display', 'none');_x000D_
_x000D_
base.$originalHeader.addClass('tableFloatingHeaderOriginal');_x000D_
_x000D_
base.$originalHeader.after(base.$clonedHeader);_x000D_
_x000D_
base.$printStyle = $('<style type="text/css" media="print">' +_x000D_
'.tableFloatingHeader{display:none !important;}' +_x000D_
'.tableFloatingHeaderOriginal{position:static !important;}' +_x000D_
'</style>');_x000D_
$('head').append(base.$printStyle);_x000D_
});_x000D_
_x000D_
base.setOptions(options);_x000D_
base.updateWidth();_x000D_
base.toggleHeaders();_x000D_
base.bind();_x000D_
};_x000D_
_x000D_
base.destroy = function () {_x000D_
base.$el.unbind('destroyed', base.teardown);_x000D_
base.teardown();_x000D_
};_x000D_
_x000D_
base.teardown = function () {_x000D_
if (base.isSticky) {_x000D_
base.$originalHeader.css('position', 'static');_x000D_
}_x000D_
$.removeData(base.el, 'plugin_' + name);_x000D_
base.unbind();_x000D_
_x000D_
base.$clonedHeader.remove();_x000D_
base.$originalHeader.removeClass('tableFloatingHeaderOriginal');_x000D_
base.$originalHeader.css('visibility', 'visible');_x000D_
base.$printStyle.remove();_x000D_
_x000D_
base.el = null;_x000D_
base.$el = null;_x000D_
};_x000D_
_x000D_
base.bind = function () {_x000D_
base.$scrollableArea.on('scroll.' + name, base.toggleHeaders);_x000D_
if (!base.isWindowScrolling) {_x000D_
base.$window.on('scroll.' + name + base.id, base.setPositionValues);_x000D_
base.$window.on('resize.' + name + base.id, base.toggleHeaders);_x000D_
}_x000D_
base.$scrollableArea.on('resize.' + name, base.toggleHeaders);_x000D_
base.$scrollableArea.on('resize.' + name, base.updateWidth);_x000D_
};_x000D_
_x000D_
base.unbind = function () {_x000D_
// unbind window events by specifying handle so we don't remove too much_x000D_
base.$scrollableArea.off('.' + name, base.toggleHeaders);_x000D_
if (!base.isWindowScrolling) {_x000D_
base.$window.off('.' + name + base.id, base.setPositionValues);_x000D_
base.$window.off('.' + name + base.id, base.toggleHeaders);_x000D_
}_x000D_
base.$scrollableArea.off('.' + name, base.updateWidth);_x000D_
};_x000D_
_x000D_
base.toggleHeaders = function () {_x000D_
if (base.$el) {_x000D_
base.$el.each(function () {_x000D_
var $this = $(this),_x000D_
newLeft,_x000D_
newTopOffset = base.isWindowScrolling ? (_x000D_
isNaN(base.options.fixedOffset) ? base.options.fixedOffset.outerHeight() : base.options.fixedOffset) : base.$scrollableArea.offset().top + (!isNaN(base.options.fixedOffset) ? base.options.fixedOffset : 0),_x000D_
offset = $this.offset(),_x000D_
_x000D_
scrollTop = base.$scrollableArea.scrollTop() + newTopOffset,_x000D_
scrollLeft = base.$scrollableArea.scrollLeft(),_x000D_
_x000D_
scrolledPastTop = base.isWindowScrolling ? scrollTop > offset.top : newTopOffset > offset.top,_x000D_
notScrolledPastBottom = (base.isWindowScrolling ? scrollTop : 0) < (offset.top + $this.height() - base.$clonedHeader.height() - (base.isWindowScrolling ? 0 : newTopOffset));_x000D_
_x000D_
if (scrolledPastTop && notScrolledPastBottom) {_x000D_
newLeft = offset.left - scrollLeft + base.options.leftOffset;_x000D_
base.$originalHeader.css({_x000D_
'position': 'fixed',_x000D_
'margin-top': base.options.marginTop,_x000D_
'left': newLeft,_x000D_
'z-index': 3 // #18: opacity bug_x000D_
});_x000D_
base.leftOffset = newLeft;_x000D_
base.topOffset = newTopOffset;_x000D_
base.$clonedHeader.css('display', '');_x000D_
if (!base.isSticky) {_x000D_
base.isSticky = true;_x000D_
// make sure the width is correct: the user might have resized the browser while in static mode_x000D_
base.updateWidth();_x000D_
}_x000D_
base.setPositionValues();_x000D_
} else if (base.isSticky) {_x000D_
base.$originalHeader.css('position', 'static');_x000D_
base.$clonedHeader.css('display', 'none');_x000D_
base.isSticky = false;_x000D_
base.resetWidth($('td,th', base.$clonedHeader), $('td,th', base.$originalHeader));_x000D_
}_x000D_
});_x000D_
}_x000D_
};_x000D_
_x000D_
base.setPositionValues = function () {_x000D_
var winScrollTop = base.$window.scrollTop(),_x000D_
winScrollLeft = base.$window.scrollLeft();_x000D_
if (!base.isSticky || winScrollTop < 0 || winScrollTop + base.$window.height() > base.$document.height() || winScrollLeft < 0 || winScrollLeft + base.$window.width() > base.$document.width()) {_x000D_
return;_x000D_
}_x000D_
base.$originalHeader.css({_x000D_
'top': base.topOffset - (base.isWindowScrolling ? 0 : winScrollTop),_x000D_
'left': base.leftOffset - (base.isWindowScrolling ? 0 : winScrollLeft)_x000D_
});_x000D_
};_x000D_
_x000D_
base.updateWidth = function () {_x000D_
if (!base.isSticky) {_x000D_
return;_x000D_
}_x000D_
// Copy cell widths from clone_x000D_
if (!base.$originalHeaderCells) {_x000D_
base.$originalHeaderCells = $('th,td', base.$originalHeader);_x000D_
}_x000D_
if (!base.$clonedHeaderCells) {_x000D_
base.$clonedHeaderCells = $('th,td', base.$clonedHeader);_x000D_
}_x000D_
var cellWidths = base.getWidth(base.$clonedHeaderCells);_x000D_
base.setWidth(cellWidths, base.$clonedHeaderCells, base.$originalHeaderCells);_x000D_
_x000D_
// Copy row width from whole table_x000D_
base.$originalHeader.css('width', base.$clonedHeader.width());_x000D_
};_x000D_
_x000D_
base.getWidth = function ($clonedHeaders) {_x000D_
var widths = [];_x000D_
$clonedHeaders.each(function (index) {_x000D_
var width, $this = $(this);_x000D_
_x000D_
if ($this.css('box-sizing') === 'border-box') {_x000D_
width = $this[0].getBoundingClientRect().width; // #39: border-box bug_x000D_
} else {_x000D_
var $origTh = $('th', base.$originalHeader);_x000D_
if ($origTh.css('border-collapse') === 'collapse') {_x000D_
if (window.getComputedStyle) {_x000D_
width = parseFloat(window.getComputedStyle(this, null).width);_x000D_
} else {_x000D_
// ie8 only_x000D_
var leftPadding = parseFloat($this.css('padding-left'));_x000D_
var rightPadding = parseFloat($this.css('padding-right'));_x000D_
// Needs more investigation - this is assuming constant border around this cell and it's neighbours._x000D_
var border = parseFloat($this.css('border-width'));_x000D_
width = $this.outerWidth() - leftPadding - rightPadding - border;_x000D_
}_x000D_
} else {_x000D_
width = $this.width();_x000D_
}_x000D_
}_x000D_
_x000D_
widths[index] = width;_x000D_
});_x000D_
return widths;_x000D_
};_x000D_
_x000D_
base.setWidth = function (widths, $clonedHeaders, $origHeaders) {_x000D_
$clonedHeaders.each(function (index) {_x000D_
var width = widths[index];_x000D_
$origHeaders.eq(index).css({_x000D_
'min-width': width,_x000D_
'max-width': width_x000D_
});_x000D_
});_x000D_
};_x000D_
_x000D_
base.resetWidth = function ($clonedHeaders, $origHeaders) {_x000D_
$clonedHeaders.each(function (index) {_x000D_
var $this = $(this);_x000D_
$origHeaders.eq(index).css({_x000D_
'min-width': $this.css('min-width'),_x000D_
'max-width': $this.css('max-width')_x000D_
});_x000D_
});_x000D_
};_x000D_
_x000D_
base.setOptions = function (options) {_x000D_
base.options = $.extend({}, defaults, options);_x000D_
base.$scrollableArea = $(base.options.scrollableArea);_x000D_
base.isWindowScrolling = base.$scrollableArea[0] === window;_x000D_
};_x000D_
_x000D_
base.updateOptions = function (options) {_x000D_
base.setOptions(options);_x000D_
// scrollableArea might have changed_x000D_
base.unbind();_x000D_
base.bind();_x000D_
base.updateWidth();_x000D_
base.toggleHeaders();_x000D_
};_x000D_
_x000D_
// Run initializer_x000D_
base.init();_x000D_
}_x000D_
_x000D_
// A plugin wrapper around the constructor,_x000D_
// preventing against multiple instantiations_x000D_
$.fn[name] = function (options) {_x000D_
return this.each(function () {_x000D_
var instance = $.data(this, 'plugin_' + name);_x000D_
if (instance) {_x000D_
if (typeof options === 'string') {_x000D_
instance[options].apply(instance);_x000D_
} else {_x000D_
instance.updateOptions(options);_x000D_
}_x000D_
} else if (options !== 'destroy') {_x000D_
$.data(this, 'plugin_' + name, new Plugin(this, options));_x000D_
}_x000D_
});_x000D_
};_x000D_
_x000D_
})(jQuery, window);
_x000D_
body {_x000D_
margin: 0 auto;_x000D_
padding: 0 20px;_x000D_
font-family: Arial, Helvetica, sans-serif;_x000D_
font-size: 11px;_x000D_
color: #555;_x000D_
}_x000D_
table {_x000D_
border: 0;_x000D_
padding: 0;_x000D_
margin: 0 0 20px 0;_x000D_
border-collapse: collapse;_x000D_
}_x000D_
th {_x000D_
padding: 5px;_x000D_
/* NOTE: th padding must be set explicitly in order to support IE */_x000D_
text-align: right;_x000D_
font-weight:bold;_x000D_
line-height: 2em;_x000D_
color: #FFF;_x000D_
background-color: #555;_x000D_
}_x000D_
tbody td {_x000D_
padding: 10px;_x000D_
line-height: 18px;_x000D_
border-top: 1px solid #E0E0E0;_x000D_
}_x000D_
tbody tr:nth-child(2n) {_x000D_
background-color: #F7F7F7;_x000D_
}_x000D_
tbody tr:hover {_x000D_
background-color: #EEEEEE;_x000D_
}_x000D_
td {_x000D_
text-align: right;_x000D_
}_x000D_
td:first-child, th:first-child {_x000D_
text-align: left;_x000D_
}
_x000D_
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>_x000D_
<div style="width:3000px">some really really wide content goes here</div>_x000D_
<table>_x000D_
<thead>_x000D_
<tr>_x000D_
<th colspan="9">Companies listed on NASDAQ OMX Copenhagen.</th>_x000D_
</tr>_x000D_
<tr>_x000D_
<th>Full name</th>_x000D_
<th>CCY</th>_x000D_
<th>Last</th>_x000D_
<th>+/-</th>_x000D_
<th>%</th>_x000D_
<th>Bid</th>_x000D_
<th>Ask</th>_x000D_
<th>Volume</th>_x000D_
<th>Turnover</th>_x000D_
</tr>_x000D_
</thead>_x000D_
<tbody>_x000D_
<tr>_x000D_
<td>A.P. Møller...</td>_x000D_
<td>DKK</td>_x000D_
<td>33,220.00</td>_x000D_
<td>760</td>_x000D_
<td>2.34</td>_x000D_
<td>33,140.00</td>_x000D_
<td>33,220.00</td>_x000D_
<td>594</td>_x000D_
<td>19,791,910</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>A.P. Møller...</td>_x000D_
<td>DKK</td>_x000D_
<td>34,620.00</td>_x000D_
<td>640</td>_x000D_
<td>1.88</td>_x000D_
<td>34,620.00</td>_x000D_
<td>34,700.00</td>_x000D_
<td>9,954</td>_x000D_
<td>346,530,246</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Carlsberg A</td>_x000D_
<td>DKK</td>_x000D_
<td>380</td>_x000D_
<td>0</td>_x000D_
<td>0</td>_x000D_
<td>371</td>_x000D_
<td>391.5</td>_x000D_
<td>6</td>_x000D_
<td>2,280</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Carlsberg B</td>_x000D_
<td>DKK</td>_x000D_
<td>364.4</td>_x000D_
<td>8.6</td>_x000D_
<td>2.42</td>_x000D_
<td>363</td>_x000D_
<td>364.4</td>_x000D_
<td>636,267</td>_x000D_
<td>228,530,601</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Chr. Hansen...</td>_x000D_
<td>DKK</td>_x000D_
<td>114.5</td>_x000D_
<td>-1.6</td>_x000D_
<td>-1.38</td>_x000D_
<td>114.2</td>_x000D_
<td>114.5</td>_x000D_
<td>141,822</td>_x000D_
<td>16,311,454</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Coloplast B</td>_x000D_
<td>DKK</td>_x000D_
<td>809.5</td>_x000D_
<td>11</td>_x000D_
<td>1.38</td>_x000D_
<td>809</td>_x000D_
<td>809.5</td>_x000D_
<td>85,840</td>_x000D_
<td>69,363,301</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>D/S Norden</td>_x000D_
<td>DKK</td>_x000D_
<td>155</td>_x000D_
<td>-1.5</td>_x000D_
<td>-0.96</td>_x000D_
<td>155</td>_x000D_
<td>155.1</td>_x000D_
<td>51,681</td>_x000D_
<td>8,037,225</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Danske Bank</td>_x000D_
<td>DKK</td>_x000D_
<td>69.05</td>_x000D_
<td>2.55</td>_x000D_
<td>3.83</td>_x000D_
<td>69.05</td>_x000D_
<td>69.2</td>_x000D_
<td>1,723,719</td>_x000D_
<td>115,348,068</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>DSV</td>_x000D_
<td>DKK</td>_x000D_
<td>105.4</td>_x000D_
<td>0.2</td>_x000D_
<td>0.19</td>_x000D_
<td>105.2</td>_x000D_
<td>105.4</td>_x000D_
<td>674,873</td>_x000D_
<td>71,575,035</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>FLSmidth & Co.</td>_x000D_
<td>DKK</td>_x000D_
<td>295.8</td>_x000D_
<td>-1.8</td>_x000D_
<td>-0.6</td>_x000D_
<td>295.1</td>_x000D_
<td>295.8</td>_x000D_
<td>341,263</td>_x000D_
<td>100,301,032</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>G4S plc</td>_x000D_
<td>DKK</td>_x000D_
<td>22.53</td>_x000D_
<td>0.05</td>_x000D_
<td>0.22</td>_x000D_
<td>22.53</td>_x000D_
<td>22.57</td>_x000D_
<td>190,920</td>_x000D_
<td>4,338,150</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Jyske Bank</td>_x000D_
<td>DKK</td>_x000D_
<td>144.2</td>_x000D_
<td>1.4</td>_x000D_
<td>0.98</td>_x000D_
<td>142.8</td>_x000D_
<td>144.2</td>_x000D_
<td>78,163</td>_x000D_
<td>11,104,874</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Københavns ...</td>_x000D_
<td>DKK</td>_x000D_
<td>1,580.00</td>_x000D_
<td>-12</td>_x000D_
<td>-0.75</td>_x000D_
<td>1,590.00</td>_x000D_
<td>1,620.00</td>_x000D_
<td>82</td>_x000D_
<td>131,110</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Lundbeck</td>_x000D_
<td>DKK</td>_x000D_
<td>103.4</td>_x000D_
<td>-2.5</td>_x000D_
<td>-2.36</td>_x000D_
<td>103.4</td>_x000D_
<td>103.8</td>_x000D_
<td>157,162</td>_x000D_
<td>16,462,282</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Nordea Bank</td>_x000D_
<td>DKK</td>_x000D_
<td>43.22</td>_x000D_
<td>-0.06</td>_x000D_
<td>-0.14</td>_x000D_
<td>43.22</td>_x000D_
<td>43.25</td>_x000D_
<td>167,520</td>_x000D_
<td>7,310,143</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Novo Nordisk B</td>_x000D_
<td>DKK</td>_x000D_
<td>552.5</td>_x000D_
<td>-3.5</td>_x000D_
<td>-0.63</td>_x000D_
<td>550.5</td>_x000D_
<td>552.5</td>_x000D_
<td>843,533</td>_x000D_
<td>463,962,375</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Novozymes B</td>_x000D_
<td>DKK</td>_x000D_
<td>805.5</td>_x000D_
<td>5.5</td>_x000D_
<td>0.69</td>_x000D_
<td>805</td>_x000D_
<td>805.5</td>_x000D_
<td>152,188</td>_x000D_
<td>121,746,199</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Pandora</td>_x000D_
<td>DKK</td>_x000D_
<td>39.04</td>_x000D_
<td>0.94</td>_x000D_
<td>2.47</td>_x000D_
<td>38.8</td>_x000D_
<td>39.04</td>_x000D_
<td>350,965</td>_x000D_
<td>13,611,838</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Rockwool In...</td>_x000D_
<td>DKK</td>_x000D_
<td>492</td>_x000D_
<td>0</td>_x000D_
<td>0</td>_x000D_
<td>482</td>_x000D_
<td>492</td>_x000D_
<td></td>_x000D_
<td></td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Rockwool In...</td>_x000D_
<td>DKK</td>_x000D_
<td>468</td>_x000D_
<td>12</td>_x000D_
<td>2.63</td>_x000D_
<td>465.2</td>_x000D_
<td>468</td>_x000D_
<td>9,885</td>_x000D_
<td>4,623,850</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Sydbank</td>_x000D_
<td>DKK</td>_x000D_
<td>95</td>_x000D_
<td>0.05</td>_x000D_
<td>0.05</td>_x000D_
<td>94.7</td>_x000D_
<td>95</td>_x000D_
<td>103,438</td>_x000D_
<td>9,802,899</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>TDC</td>_x000D_
<td>DKK</td>_x000D_
<td>43.6</td>_x000D_
<td>0.13</td>_x000D_
<td>0.3</td>_x000D_
<td>43.5</td>_x000D_
<td>43.6</td>_x000D_
<td>845,110</td>_x000D_
<td>36,785,339</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Topdanmark</td>_x000D_
<td>DKK</td>_x000D_
<td>854</td>_x000D_
<td>13.5</td>_x000D_
<td>1.61</td>_x000D_
<td>854</td>_x000D_
<td>855</td>_x000D_
<td>38,679</td>_x000D_
<td>32,737,678</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Tryg</td>_x000D_
<td>DKK</td>_x000D_
<td>290.4</td>_x000D_
<td>0.3</td>_x000D_
<td>0.1</td>_x000D_
<td>290</td>_x000D_
<td>290.4</td>_x000D_
<td>94,587</td>_x000D_
<td>27,537,247</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>Vestas Wind...</td>_x000D_
<td>DKK</td>_x000D_
<td>90.15</td>_x000D_
<td>-4.2</td>_x000D_
<td>-4.45</td>_x000D_
<td>90.1</td>_x000D_
<td>90.15</td>_x000D_
<td>1,317,313</td>_x000D_
<td>121,064,314</td>_x000D_
</tr>_x000D_
<tr>_x000D_
<td>William Dem...</td>_x000D_
<td>DKK</td>_x000D_
<td>417.6</td>_x000D_
<td>0.1</td>_x000D_
<td>0.02</td>_x000D_
<td>417</td>_x000D_
<td>417.6</td>_x000D_
<td>64,242</td>_x000D_
<td>26,859,554</td>_x000D_
</tr>_x000D_
</tbody>_x000D_
</table>_x000D_
<div style="height: 4000px">lots of content down here...</div>
_x000D_
===
and !==
are strict comparison operators:
JavaScript has both strict and type-converting equality comparison. For
strict
equality the objects being compared must have the same type and:
- Two strings are strictly equal when they have the same sequence of characters, same length, and same characters in corresponding positions.
- Two numbers are strictly equal when they are numerically equal (have the same number value).
NaN
is not equal to anything, includingNaN
. Positive and negative zeros are equal to one another.- Two Boolean operands are strictly equal if both are true or both are false.
- Two objects are strictly equal if they refer to the same
Object
.Null
andUndefined
types are==
(but not===
). [I.e. (Null==Undefined
) istrue
but (Null===Undefined
) isfalse
]
I used the Visual Studio 2008 Uninstall tool and it worked fine for me.
You can use this tool to uninstall Visual Studio 2008 official release and Visual Studio 2008 Release candidate (Only English version).
Found here, on the MSDN Forum: MSDN forum topic.
I found this answer here
Be sure you run the tool with admin-rights.
There are multiple ways of reshaping a PyTorch tensor. You can apply these methods on a tensor of any dimensionality.
Let's start with a 2-dimensional 2 x 3
tensor:
x = torch.Tensor(2, 3)
print(x.shape)
# torch.Size([2, 3])
To add some robustness to this problem, let's reshape the 2 x 3
tensor by adding a new dimension at the front and another dimension in the middle, producing a 1 x 2 x 1 x 3
tensor.
None
Use NumPy-style insertion of None
(aka np.newaxis
) to add dimensions anywhere you want. See here.
print(x.shape)
# torch.Size([2, 3])
y = x[None, :, None, :] # Add new dimensions at positions 0 and 2.
print(y.shape)
# torch.Size([1, 2, 1, 3])
Use torch.Tensor.unsqueeze(i)
(a.k.a. torch.unsqueeze(tensor, i)
or the in-place version unsqueeze_()
) to add a new dimension at the i'th dimension. The returned tensor shares the same data as the original tensor. In this example, we can use unqueeze()
twice to add the two new dimensions.
print(x.shape)
# torch.Size([2, 3])
# Use unsqueeze twice.
y = x.unsqueeze(0) # Add new dimension at position 0
print(y.shape)
# torch.Size([1, 2, 3])
y = y.unsqueeze(2) # Add new dimension at position 2
print(y.shape)
# torch.Size([1, 2, 1, 3])
In practice with PyTorch, adding an extra dimension for the batch may be important, so you may often see unsqueeze(0)
.
Use torch.Tensor.view(*shape)
to specify all the dimensions. The returned tensor shares the same data as the original tensor.
print(x.shape)
# torch.Size([2, 3])
y = x.view(1, 2, 1, 3)
print(y.shape)
# torch.Size([1, 2, 1, 3])
Use torch.Tensor.reshape(*shape)
(aka torch.reshape(tensor, shapetuple)
) to specify all the dimensions. If the original data is contiguous and has the same stride, the returned tensor will be a view of input (sharing the same data), otherwise it will be a copy. This function is similar to the NumPy reshape()
function in that it lets you define all the dimensions and can return either a view or a copy.
print(x.shape)
# torch.Size([2, 3])
y = x.reshape(1, 2, 1, 3)
print(y.shape)
# torch.Size([1, 2, 1, 3])
Furthermore, from the O'Reilly 2019 book Programming PyTorch for Deep Learning, the author writes:
Now you might wonder what the difference is between view()
and reshape()
. The answer is that view()
operates as a view on the original tensor, so if the underlying data is changed, the view will change too (and vice versa). However, view()
can throw errors if the required view is not contiguous; that is, it doesn’t share the same block of memory it would occupy if a new tensor of the required shape was created from scratch. If this happens, you have to call tensor.contiguous()
before you can use view()
. However, reshape()
does all that behind the scenes, so in general, I recommend using reshape()
rather than view()
.
Use the in-place function torch.Tensor.resize_(*sizes)
to modify the original tensor. The documentation states:
WARNING. This is a low-level method. The storage is reinterpreted as C-contiguous, ignoring the current strides (unless the target size equals the current size, in which case the tensor is left unchanged). For most purposes, you will instead want to use view()
, which checks for contiguity, or reshape()
, which copies data if needed. To change the size in-place with custom strides, see set_()
.
print(x.shape)
# torch.Size([2, 3])
x.resize_(1, 2, 1, 3)
print(x.shape)
# torch.Size([1, 2, 1, 3])
If you want to add just one dimension (e.g. to add a 0th dimension for the batch), then use unsqueeze(0)
. If you want to totally change the dimensionality, use reshape()
.
What's the difference between reshape and view in pytorch?
What is the difference between view() and unsqueeze()?
In PyTorch 0.4, is it recommended to use reshape
than view
when it is possible?
By default, IDLE has it on Shift-Left Bracket. However, if you want, you can customise it to be Shift-Tab by clicking Options --> Configure IDLE --> Keys --> Use a Custom Key Set --> dedent-region --> Get New Keys for Selection
Then you can choose whatever combination you want. (Don't forget to click apply otherwise all the settings would not get affected.)
This method is no longer recommended. fs.exists is deprecated. See comments.
Here are some options:
1) Have 2 "fs" calls. The first one is the "fs.exists" call, and the second is "fs.write / read, etc"
//checks if the file exists.
//If it does, it just calls back.
//If it doesn't, then the file is created.
function checkForFile(fileName,callback)
{
fs.exists(fileName, function (exists) {
if(exists)
{
callback();
}else
{
fs.writeFile(fileName, {flag: 'wx'}, function (err, data)
{
callback();
})
}
});
}
function writeToFile()
{
checkForFile("file.dat",function()
{
//It is now safe to write/read to file.dat
fs.readFile("file.dat", function (err,data)
{
//do stuff
});
});
}
2) Or Create an empty file first:
--- Sync:
//If you want to force the file to be empty then you want to use the 'w' flag:
var fd = fs.openSync(filepath, 'w');
//That will truncate the file if it exists and create it if it doesn't.
//Wrap it in an fs.closeSync call if you don't need the file descriptor it returns.
fs.closeSync(fs.openSync(filepath, 'w'));
--- ASync:
var fs = require("fs");
fs.open(path, "wx", function (err, fd) {
// handle error
fs.close(fd, function (err) {
// handle error
});
});
3) Or use "touch": https://github.com/isaacs/node-touch
$_ is an variable which iterates over each object/element passed from the previous | (pipe).
Mahesh is not quite correct when he suggests that you can't alter the data in a view. So with patrick's view
CREATE View vw_user_profile AS
Select A.user_id, B.profile_description
FROM tbl_user A left join tbl_profile B on A.user_id = b.user_id
I CAN update the data ... as an example I can do either of these ...
Update vw_user_profile Set profile_description='Manager' where user_id=4
or
Update tbl_profile Set profile_description='Manager' where user_id=4
You can't INSERT to this view as not all of the fields in all of the table are present and I'm assuming that PROFILE_ID is the primary key and can't be NULL. However you can sometimes INSERT into a view ...
I created a view on an existing table using ...
Create View Junk as SELECT * from [TableName]
THEN
Insert into junk (Code,name) values
('glyn','Glyn Roberts'),
('Mary','Maryann Roberts')
and
DELETE from Junk Where ID>4
Both the INSERT and the DELETE worked in this case
Obviously you can't update any fields which are aggregated or calculated but any view which is just a straight view should be updateable.
If the view contains more than one table then you can't insert or delete but if the view is a subset of one table only then you usually can.
I got a solution for you, Why dont you rather use Explode if your url is something like
Url-> website.com/test/blog.php
$StringExplo=explode("/",$_SERVER['REQUEST_URI']);
$HeadTo=$StringExplo[0]."/Index.php";
Header("Location: ".$HeadTo);
Almost there. In your predicate, you want a relative path, so change
./book[/author/name = 'John']
to either
./book[author/name = 'John']
or
./book[./author/name = 'John']
and you will match your element. Your current predicate goes back to the root of the document to look for an author
.
So you need a natural sort ?
If so, than maybe this script by Brian Huisman based on David koelle's work would be what you need.
It seems like Brian Huisman's solution is now directly hosted on David Koelle's blog:
Use dynamic_cast
for converting pointers/references within an inheritance hierarchy.
Use static_cast
for ordinary type conversions.
Use reinterpret_cast
for low-level reinterpreting of bit patterns. Use with extreme caution.
Use const_cast
for casting away const/volatile
. Avoid this unless you are stuck using a const-incorrect API.
Run the command INFO
. The version will be the first item displayed.
The advantage of this over redis-server --version is that sometimes you don't have access to the server (e.g. when it's provided to you on the cloud), in which case INFO
is your only option.
A double asterisk means to the power of. A single asterisk means multiplied by. 22 is the same as 2x2 which is why both answers came out as 4.
Your best bet is to review the Java Swing tutorials, specifically the tutorial on Buttons.
The short code snippet is:
jBtnDrawCircle.addActionListener( /*class that implements ActionListener*/ );
I got the problem that the installation stopped by "$(^name) has stopped working" error. I have installed Java SE Development kit already, also set both SDK_HOME and JAVA_HOME that point to "C:\Program Files\Java\jdk1.7.0_21\"
My laptop installed with Windows 7 64 bits
So I tried to install the 32 bit version of Java SE Developement kit, set my JAVA_HOME to "C:\Program Files (x86)\Java\jdk1.7.0_21", restart and the installation worked OK.
This is old but here's another way.
#include <stdio.h>
#define atoa(x) #x
int main(int argc, char *argv[])
{
char *string = atoa(1234567890);
printf("%s\n", string);
return 0;
}
This can be done using GroupBy and SelectMany in LINQ lamda expression
var groupByMax = list.GroupBy(x=>x.item1).SelectMany(y=>y.Where(z=>z.item2 == y.Max(i=>i.item2)));
lazy-init is the attribute of bean. The values of lazy-init can be true and false. If lazy-init is true, then that bean will be initialized when a request is made to bean. This bean will not be initialized when the spring container is initialized and if lazy-init is false then the bean will be initialized with the spring container initialization.
I have a couple of turn-based games where I need the AI to pause before taking its turn (and between steps in its turn). I'm sure there are other, more useful, situations where a delay is the best solution. In Swift:
let delay = 2.0 * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue()) { self.playerTapped(aiPlayView) }
I just came back here to see if the Objective-C calls were different.(I need to add this to that one, too.)
Since I never can remember that LINQ calls it Where
, Select
and Aggregate
instead of Filter
, Map
and Reduce
so I created a few extension methods you can use:
IEnumerable<string> myStrings = new List<string>() { "1", "2", "3", "4", "5" };
IEnumerable<int> convertedToInts = myStrings.Map(s => int.Parse(s));
IEnumerable<int> filteredInts = convertedToInts.Filter(i => i <= 3); // Keep 1,2,3
int sumOfAllInts = filteredInts.Reduce((sum, i) => sum + i); // Sum up all ints
Assert.Equal(6, sumOfAllInts); // 1+2+3 is 6
Here are the 3 methods (from https://github.com/cs-util-com/cscore/blob/master/CsCore/PlainNetClassLib/src/Plugins/CsCore/com/csutil/collections/IEnumerableExtensions.cs ):
public static IEnumerable<R> Map<T, R>(this IEnumerable<T> self, Func<T, R> selector) {
return self.Select(selector);
}
public static T Reduce<T>(this IEnumerable<T> self, Func<T, T, T> func) {
return self.Aggregate(func);
}
public static IEnumerable<T> Filter<T>(this IEnumerable<T> self, Func<T, bool> predicate) {
return self.Where(predicate);
}
Some more details from https://github.com/cs-util-com/cscore#ienumerable-extensions :
If your base class is called Base
, and your function is called FooBar()
you can call it directly using Base::FooBar()
void Base::FooBar()
{
printf("in Base\n");
}
void ChildOfBase::FooBar()
{
Base::FooBar();
}
Probably a maximized Form helps, or you can do this manually upon form load:
Code Block
this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;
And then, play with anchoring, so the child controls inside your form automatically fit in your form's new size.
Hope this helps,
I had several *.save files (emergency dumps from nano) from different NGINX config files in my sites-avilable dir. Once I deleted these .save files, NGINX restarted fine. I assumed these were harmless since there were no corresponding symlinks, but I guess I was wrong.
This code achieves what you want --- also its weird and certainly buggy:
I observed that it works when:
a) you specify the index_col
rel. to the number of columns you really use -- so its three columns in this example, not four (you drop dummy
and start counting from then onwards)
b) same for parse_dates
c) not so for usecols
;) for obvious reasons
d) here I adapted the names
to mirror this behaviour
import pandas as pd
from StringIO import StringIO
csv = """dummy,date,loc,x
bar,20090101,a,1
bar,20090102,a,3
bar,20090103,a,5
bar,20090101,b,1
bar,20090102,b,3
bar,20090103,b,5
"""
df = pd.read_csv(StringIO(csv),
index_col=[0,1],
usecols=[1,2,3],
parse_dates=[0],
header=0,
names=["date", "loc", "", "x"])
print df
which prints
x
date loc
2009-01-01 a 1
2009-01-02 a 3
2009-01-03 a 5
2009-01-01 b 1
2009-01-02 b 3
2009-01-03 b 5
Although the answers above seems correct, just a simple explanation to give you an idea of how it works.
Suppose that your column is set to be DECIMAL(13,4)
. This means that the column will have a total size of 13 digits where 4 of these will be used for precision representation.
So, in summary, for that column you would have a max value of: 999999999.9999
Here's a method which receives boundaries and returns a random integer. It is slightly more advanced (completely universal): boundaries can be both positive and negative, and minimum/maximum boundaries can come in any order.
int myRand(int i_from, int i_to) {
return (int)(Math.random() * (Math.abs(i_from - i_to) + 1)) + Math.min(i_from, i_to);
}
In general, it finds the absolute distance between the borders, gets relevant random value, and then shifts the answer based on the bottom border.
Removing the v=...&
part from the url, and only keep the list=...
part. The main problem being the special character &
, interpreted by the shell.
You can also quote your 'url' in your command.
More information here (for instance) :
https://askubuntu.com/questions/564567/how-to-download-playlist-from-youtube-dl
Undoubtly this can be simplified but the results match your expectations.
The gist of this is to
CTE
for each t2ID
CTE
for each t2ID
CTE
's SQL Statement
;WITH MaxPrice AS (
SELECT t2ID
, t1ID
FROM (
SELECT t2.ID AS t2ID
, t1.ID AS t1ID
, rn = ROW_NUMBER() OVER (PARTITION BY t2.ID ORDER BY t1.Price DESC)
FROM @t1 t1
INNER JOIN @relation r ON r.t1ID = t1.ID
INNER JOIN @t2 t2 ON t2.ID = r.t2ID
) maxt1
WHERE maxt1.rn = 1
)
, SumPrice AS (
SELECT t2ID = t2.ID
, Price = SUM(Price)
FROM @t1 t1
INNER JOIN @relation r ON r.t1ID = t1.ID
INNER JOIN @t2 t2 ON t2.ID = r.t2ID
GROUP BY
t2.ID
)
SELECT t2.ID
, t2.Name
, t2.Orders
, mp.t1ID
, t1.ID
, t1.Name
, sp.Price
FROM @t2 t2
INNER JOIN MaxPrice mp ON mp.t2ID = t2.ID
INNER JOIN SumPrice sp ON sp.t2ID = t2.ID
INNER JOIN @t1 t1 ON t1.ID = mp.t1ID
This worked for me:
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
for postgresql earlier than 9.2 replace pid
with procpid
DROP DATABASE "YourDatabase";
To change the encoding of your database:
Make sure the client encoding is set correctly during all this.
Source: http://archives.postgresql.org/pgsql-novice/2006-03/msg00210.php
Just do System.out.println(e.getActionCommand());
inside actionPerformed(ActionEvent e)
function. This will tell you which command is just performed.
or
if(e.getActionCommand().equals("Add")){
System.out.println("Add button pressed");
}
That's not really how python works. Just use it like you would a number, and if someone passes you something that's not a number, fail. It's the programmer's responsibility to pass in the correct types.
im attach my vb.net code based on brian reference
Imports System.ComponentModel
Imports System.Runtime.InteropServices
Public Class PinvokeWindowsNetworking
Const NO_ERROR As Integer = 0
Private Structure ErrorClass
Public num As Integer
Public message As String
Public Sub New(ByVal num As Integer, ByVal message As String)
Me.num = num
Me.message = message
End Sub
End Structure
Private Shared ERROR_LIST As ErrorClass() = New ErrorClass() {
New ErrorClass(5, "Error: Access Denied"),
New ErrorClass(85, "Error: Already Assigned"),
New ErrorClass(1200, "Error: Bad Device"),
New ErrorClass(67, "Error: Bad Net Name"),
New ErrorClass(1204, "Error: Bad Provider"),
New ErrorClass(1223, "Error: Cancelled"),
New ErrorClass(1208, "Error: Extended Error"),
New ErrorClass(487, "Error: Invalid Address"),
New ErrorClass(87, "Error: Invalid Parameter"),
New ErrorClass(1216, "Error: Invalid Password"),
New ErrorClass(234, "Error: More Data"),
New ErrorClass(259, "Error: No More Items"),
New ErrorClass(1203, "Error: No Net Or Bad Path"),
New ErrorClass(1222, "Error: No Network"),
New ErrorClass(1206, "Error: Bad Profile"),
New ErrorClass(1205, "Error: Cannot Open Profile"),
New ErrorClass(2404, "Error: Device In Use"),
New ErrorClass(2250, "Error: Not Connected"),
New ErrorClass(2401, "Error: Open Files")}
Private Shared Function getErrorForNumber(ByVal errNum As Integer) As String
For Each er As ErrorClass In ERROR_LIST
If er.num = errNum Then Return er.message
Next
Try
Throw New Win32Exception(errNum)
Catch ex As Exception
Return "Error: Unknown, " & errNum & " " & ex.Message
End Try
Return "Error: Unknown, " & errNum
End Function
<DllImport("Mpr.dll")>
Private Shared Function WNetUseConnection(ByVal hwndOwner As IntPtr, ByVal lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserID As String, ByVal dwFlags As Integer, ByVal lpAccessName As String, ByVal lpBufferSize As String, ByVal lpResult As String) As Integer
End Function
<DllImport("Mpr.dll")>
Private Shared Function WNetCancelConnection2(ByVal lpName As String, ByVal dwFlags As Integer, ByVal fForce As Boolean) As Integer
End Function
<StructLayout(LayoutKind.Sequential)>
Private Class NETRESOURCE
Public dwScope As Integer = 0
Public dwType As Integer = 0
Public dwDisplayType As Integer = 0
Public dwUsage As Integer = 0
Public lpLocalName As String = ""
Public lpRemoteName As String = ""
Public lpComment As String = ""
Public lpProvider As String = ""
End Class
Public Shared Function connectToRemote(ByVal remoteUNC As String, ByVal username As String, ByVal password As String) As String
Return connectToRemote(remoteUNC, username, password, False)
End Function
Public Shared Function connectToRemote(ByVal remoteUNC As String, ByVal username As String, ByVal password As String, ByVal promptUser As Boolean) As String
Dim nr As NETRESOURCE = New NETRESOURCE()
nr.dwType = ResourceTypes.Disk
nr.lpRemoteName = remoteUNC
Dim ret As Integer
If promptUser Then
ret = WNetUseConnection(IntPtr.Zero, nr, "", "", Connects.Interactive Or Connects.Prompt, Nothing, Nothing, Nothing)
Else
ret = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, Nothing, Nothing, Nothing)
End If
If ret = NO_ERROR Then Return Nothing
Return getErrorForNumber(ret)
End Function
Public Shared Function disconnectRemote(ByVal remoteUNC As String) As String
Dim ret As Integer = WNetCancelConnection2(remoteUNC, Connects.UpdateProfile, False)
If ret = NO_ERROR Then Return Nothing
Return getErrorForNumber(ret)
End Function
Enum Resources As Integer
Connected = &H1
GlobalNet = &H2
Remembered = &H3
End Enum
Enum ResourceTypes As Integer
Any = &H0
Disk = &H1
Print = &H2
End Enum
Enum ResourceDisplayTypes As Integer
Generic = &H0
Domain = &H1
Server = &H2
Share = &H3
File = &H4
Group = &H5
End Enum
Enum ResourceUsages As Integer
Connectable = &H1
Container = &H2
End Enum
Enum Connects As Integer
Interactive = &H8
Prompt = &H10
Redirect = &H80
UpdateProfile = &H1
CommandLine = &H800
CmdSaveCred = &H1000
LocalDrive = &H100
End Enum
End Class
how to use it
Dim login = PinvokeWindowsNetworking.connectToRemote("\\ComputerName", "ComputerName\UserName", "Password")
If IsNothing(login) Then
'do your thing on the shared folder
PinvokeWindowsNetworking.disconnectRemote("\\ComputerName")
End If
zip()
in conjunction with the *
operator can be used to unzip
a list
unzip_lst = zip(*mylist)
for i in unzip_lst:
for j in i:
print j
Use this snippet:
@echo off
echo something
echo.
echo press enter to exit
pause >nul
exit
Use .closest()
, which gets the first ancestor element that matches the given selector 'div'
:
var classes = $(this).closest('div').attr('class').split(' ');
EDIT:
As @Shef noted, .closest()
will return the current element if it happens to be a DIV also. To take that into account, use .parent()
first:
var classes = $(this).parent().closest('div').attr('class').split(' ');
you could add an sed script to your commandline:
ls /home/user/new/*.txt | sed -r 's/^.+\///'
when I load in a json object I usually setup the relationships by iterating through the object arrays like this:
for (var i = 0; i < some.json.objectarray.length; i++) {
var p = some.json.objectarray[i];
for (var j = 0; j < p.somechildarray.length; j++) {
p.somechildarray[j].parent = p;
}
}
then you can access the parent object of some object in the somechildarray by using .parent
I found a super simple solution using
<input type="text" inputmode="numeric" />
This is supported is most browsers: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode
Combining answers by Petr and Sarfraz, I arrive at the following.
On page1.html:
<a href="page2.html#elementID">Jump</a>
On page2.html:
<script type="text/javascript">
$(document).ready(function() {
$('html, body').hide();
if (window.location.hash) {
setTimeout(function() {
$('html, body').scrollTop(0).show();
$('html, body').animate({
scrollTop: $(window.location.hash).offset().top
}, 1000)
}, 0);
}
else {
$('html, body').show();
}
});
</script>
Redirection in angularjs 4 Button for event in eg:app.home.html
<input type="button" value="clear" (click)="onSubmit()"/>
and in home.componant.ts
import {Component} from '@angular/core';
import {Router} from '@angular/router';
@Component({
selector: 'app-root',
templateUrl: './app.home.html',
})
export class HomeComponant {
title = 'Home';
constructor(
private router: Router,
) {}
onSubmit() {
this.router.navigate(['/doctor'])
}
}
It's not a good idea to uninstall 1.8.6 if it's in /usr/bin
. That is owned by the OS and is expected to be there.
If you put /usr/local/bin
in your PATH before /usr/bin
then things you have installed in /usr/local/bin
will be found before any with the same name in /usr/bin
, effectively overwriting or updating them, without actually doing so. You can still reach them by explicitly using /usr/bin
in your #! interpreter invocation line at the top of your code.
@Anurag recommended using RVM, which I'll second. I use it to manage 1.8.7 and 1.9.1 in addition to the OS's 1.8.6.