问:
How can i print html page at 300 dpi resolution
i have a web page that encoded in html and css.
the size of the web page is of A4 Page (300dpi) = 2480 X 3508 (PX).

the problem is that when i print my web page it's printing in 72/96dpi resolution and print 7 pages instead of 1, and i want that the printer will print my web page in 300dpi resolution.

some code in CSS, HTML, JAVASCRIPT or something that can help me?

thanks.

答:
I made something similar using pdfkit but i think it has to be used with python or more specific i used it with django and it worked fine for me and created a 300dpi pdf
Try this

options = {
    'page-size': 'Letter',
    'margin-top': '0.75in',
    'margin-right': '0.75in',
    'margin-bottom': '0.75in',
    'margin-left': '0.75in',
    'encoding': "UTF-8",
     'dpi': '300',
    'custom-header' : [
        ('Accept-Encoding', 'gzip')
    ]
    'cookie': [
        ('cookie-name1', 'cookie-value1'),
        ('cookie-name2', 'cookie-value2'),
    ],
    'no-outline': None
}

pdfkit.from_url('http://google.com', 'out.pdf', options=options)

https://github.com/JazzCore/python-pdfkit/blob/master/README.rst


来源: stackexchange

问:
Open Street Map using OSMNX: how to retrieve the Hannover subway network?
```<code>import osmnx as ox
ox.__version__ # '0.13.0'
</code>```

I would like to show the subway in Hannover as known in the German subway OSM data on a map using the great OSMNX module. But unlike the New York example no results are returned for:

```<code>G = ox.graph_from_place('Hannover, Germany',
                        retain_all=False, truncate_by_edge=True, simplify=True,
                        network_type='none', custom_filter='["railway"~"subway"]')

# EmptyOverpassResponse: There are no data elements in the response JSON
</code>```

I do get results for other similar queries using 'Hannover, Germany' as region. I also do not get subway results for Paris or London. And I do not get results for similar queries like custom_filter='["railway"~"tram"]' or '["railway"~"s-bahn"]' or '["network"~"metro"]'.

Also, if I use the infrastructure keyword argument to select "railway", an extensive gdf is returned:

```<code>G = ox.graph_from_place('Hannover, Germany', retain_all=False, truncate_by_edge=True, simplify=True,
                        network_type='none', infrastructure='way["railway"]')
gdfox = ox.graph_to_gdfs(G, nodes=False, edges=True, node_geometry=True, fill_edge_geometry=True)
gdfox.shape # (4422, 14)
</code>```

But I cannot identify the subway using the columns returned?:

```<code>['u', 'v', 'key', 'osmid', 'service', 'oneway', 'length',
   'geometry', 'name', 'maxspeed', 'ref', 'bridge', 'tunnel',
   'access']
</code>```

What I also find strange is that there are only 2 LINESTRINGS returned if I (try to) retrieve all railways using the custom_filter:

```<code>G = ox.graph_from_place('Hannover, Germany', retain_all=False, truncate_by_edge=True,
                        simplify=True, network_type=None, custom_filter='["railway"~""]')
gdfox = ox.graph_to_gdfs(G, nodes=False, edges=True, node_geometry=True, fill_edge_geometry=True)
gdfox.shape # (2, 10) # returns only 2 LINESTRINGS: Altenbekener Damm
</code>```

答:
I am in the process of removing the infrastructure parameter in favor of a more consistent custom_filter parameter. Will be done in a couple days: https://github.com/gboeing/osmnx/pull/477 (EDIT: done and released in v0.14.0; code snippet below edited accordingly.)

In the meantime, I am not familiar with Hannover but it appears that its passenger rail system is tagged as "tram" and "rail" rather than "subway". Something like this seems to capture it:

import osmnx as ox
ox.config(use_cache=False,
          log_console=True,
          useful_tags_way=ox.settings.useful_tags_way + ['railway'])

G = ox.graph_from_place('Hannover, Germany',
                        retain_all=False, truncate_by_edge=True, simplify=True,
                        custom_filter='["railway"~"tram|rail"]')
len(G) #1776
```

ContentLicense: CC BY-SA 4.0

Body:
import osmnx as ox
ox.__version__ # '0.13.0'

I would like to show the subway in Hannover as known in the German subway OSM data on a map using the great OSMNX module. But unlike the New York example no results are returned for:

G = ox.graph_from_place('Hannover, Germany',
                        retain_all=False, truncate_by_edge=True, simplify=True,
                        network_type='none', custom_filter='["railway"~"subway"]')

# EmptyOverpassResponse: There are no data elements in the response JSON

I do get results for other similar queries using 'Hannover, Germany' as region. I also do not get subway results for Paris or London. And I do not get results for similar queries like custom_filter='["railway"~"tram"]' or '["railway"~"s-bahn"]' or '["network"~"metro"]'.

Also, if I use the infrastructure keyword argument to select "railway", an extensive gdf is returned:

G = ox.graph_from_place('Hannover, Germany', retain_all=False, truncate_by_edge=True, simplify=True,
                        network_type='none', infrastructure='way["railway"]')
gdfox = ox.graph_to_gdfs(G, nodes=False, edges=True, node_geometry=True, fill_edge_geometry=True)
gdfox.shape # (4422, 14)

But I cannot identify the subway using the columns returned?:

['u', 'v', 'key', 'osmid', 'service', 'oneway', 'length',
   'geometry', 'name', 'maxspeed', 'ref', 'bridge', 'tunnel',
   'access']

What I also find strange is that there are only 2 LINESTRINGS returned if I (try to) retrieve all railways using the custom_filter:

G = ox.graph_from_place('Hannover, Germany', retain_all=False, truncate_by_edge=True,
                        simplify=True, network_type=None, custom_filter='["railway"~""]')
gdfox = ox.graph_to_gdfs(G, nodes=False, edges=True, node_geometry=True, fill_edge_geometry=True)
gdfox.shape # (2, 10) # returns only 2 LINESTRINGS: Altenbekener Damm


问:
Listing changes made by a particular user in svn using windows command prompt
I have the same requirement as asked in the question List all files changed by a particular user in subversion.

I want to display all the changes made by a particular user in SVN (by date)using windows command prompt, so that we can include it in a batch file.

Are there any ways to do it?

答:
If you have and can use Powershell :

```<code> svn log -v http://mb-unit.googlecode.com/svn/trunk | Select-String "author"
</code>```

In a batch file you can do like:

```<code>@powershell -command "svn log -v http://mb-unit.googlecode.com/svn/trunk | Select-String 'author'"
</code>```

Tools like grep, findstr ( common on Windows ) can also be used. ALso, even sed as mentioned in the answer that you have linked to, is available for windows ( through Msys for example - http://www.mingw.org/wiki/msys )

ContentLicense: CC BY-SA 3.0

Body:
If you have and can use Powershell :

 svn log -v http://mb-unit.googlecode.com/svn/trunk | Select-String "author"

In a batch file you can do like:

@powershell -command "svn log -v http://mb-unit.googlecode.com/svn/trunk | Select-String 'author'"

Tools like grep, findstr ( common on Windows ) can also be used. ALso, even sed as mentioned in the answer that you have linked to, is available for windows ( through Msys for example - http://www.mingw.org/wiki/msys )


问:
Fill HTML table with stored procedure SELECT statement output
I am using C# .NET MVC 4 and entity framework to execute a stored procedure. I have a query that is running in the stored procedure that looks something like:

```<code>Select Column1, Column2, Column3
from TestTable
Where StatusId = 3;
</code>```

So lets say this returns about 50 rows. I am trying to get the output from the SELECT statement into an HTML table in my View. I haven't done this type of thing before so I am not sure of the best approach. Could that much data be sent back to the controller in output parameters. If so, I don't quite understand the approach to format that data into the HTML table.

I've done something similar before, but in that case I only had one row come back each time so I just sent the data back to the controller in output parameters and then sent it to my view in a ViewBag. What is the best approach with multiple rows?

Thanks!

答:
The Stored Procedure will be called by passing the parameter value using Entity Framework.

Once the Entity Framework is configured, the next step is to import the Stored Procedure in the Entity Framework model. In order to do so, you will need to Right Click the Entity Model and select Update Model from Database option.

The Stored Procedure is called in the Controller and Entity is returned to the View.
Very well explained here

Body:
I am using C# .NET MVC 4 and entity framework to execute a stored procedure. I have a query that is running in the stored procedure that looks something like:

Select Column1, Column2, Column3
from TestTable
Where StatusId = 3;

So lets say this returns about 50 rows. I am trying to get the output from the SELECT statement into an HTML table in my View. I haven't done this type of thing before so I am not sure of the best approach. Could that much data be sent back to the controller in output parameters. If so, I don't quite understand the approach to format that data into the HTML table.

I've done something similar before, but in that case I only had one row come back each time so I just sent the data back to the controller in output parameters and then sent it to my view in a ViewBag. What is the best approach with multiple rows?

Thanks!


问:
for and while loop combined
I'm trying to add a while for my question list of constructs. I want python to only allow answers like "helemaal mee oneens, mee oneens, etc).
I understand how I make this with simple code. But I don't know how I can make all those questions only accept input from the answers I want.
There is raw input, so people have to be able to type their answer. I tried this:

```<code>for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")
</code>```

That didn't work out quite well.. It just printed a lot of "het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden." Can anybody help me?
I'm not good at programming, i have to do this for a school assignment and i really don't get it..

```<code>while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])
</code>```

this is the whole file:

```<code># antwoorden demografische vragen
Naam = ("onbekend")
Geslacht = ("onbekend")
Leeftijd = ("onbekend")

# overige vragen
Welk_construct = ("onbekend")
Nog_een = ("onbekend")

# antwoorden Vragenlijst_vriendelijkheid
Antwoord_V1 = ("onbekend")
Antwoord_V2 = ("onbekend")
Antwoord_V3 = ("onbekend")
Antwoord_V4 = ("onbekend")
Antwoord_V5 = ("onbekend")
Antwoord_V6 = ("onbekend")
Antwoord_V7 = ("onbekend")
Antwoord_V8 = ("onbekend")

# antwoorden Vragenlijst_consiëntieusheid
Antwoord_C1 = ("onbekend")
Antwoord_C2 = ("onbekend")
Antwoord_C3 = ("onbekend")
Antwoord_C4 = ("onbekend")
Antwoord_C5 = ("onbekend")
Antwoord_C6 = ("onbekend")
Antwoord_C7 = ("onbekend")
Antwoord_C8 = ("onbekend")

# antwoorden Vragenlijst_autonomie
Antwoord_A1 = ("onbekend")
Antwoord_A2 = ("onbekend")
Antwoord_A3 = ("onbekend")
Antwoord_A4 = ("onbekend")
Antwoord_A5 = ("onbekend")
Antwoord_A6 = ("onbekend")
Antwoord_A7 = ("onbekend")
Antwoord_A8 = ("onbekend")

# antwoorden Vragenlijst_extraversie
Antwoord_E1 = ("onbekend")
Antwoord_E2 = ("onbekend")
Antwoord_E3 = ("onbekend")
Antwoord_E4 = ("onbekend")
Antwoord_E5 = ("onbekend")
Antwoord_E6 = ("onbekend")
Antwoord_E7 = ("onbekend")
Antwoord_E8 = ("onbekend")

# antwoorden Vragenijst_emotionele_stabiliteit
Antwoord_ES1 = ("onbekend")
Antwoord_ES2 = ("onbekend")
Antwoord_ES3 = ("onbekend")
Antwoord_ES4 = ("onbekend")
Antwoord_ES5 = ("onbekend")
Antwoord_ES6 = ("onbekend")
Antwoord_ES7 = ("onbekend")
Antwoord_ES8 = ("onbekend")

# vragenlijsten

Demografische_vragen = (["Wat is uw naam? Typ hier uw naam.", "Wat is uw geslacht? Typ hier Man, Vrouw of Anders.", "Wat is uw leeftijd? Typ hier uw leeftijd in jaren."])

Vragenlijst_vriendelijkheid = (["Vraag V1: Ik heb vertrouwen in anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", " Vraag V2: Ik gebruik en manipuleer anderen om mijn zin te krijgen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V3: Ik help anderen graag. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraaga V4: Ik hou van strijd en een stevige discussie. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V5: Ik vind mezelf beter dan anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V6: Ik heb medelijden met daklozen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V7: Ik denk dat mensen in principe goede bedoelingen hebben. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V8: Ik vind het niet erg om te bedriegen om hogerop te komen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_consciëntieusheid = (["Vraag C1: Ik breng taken tot een goed einde. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C2: Ik hou niet van wandorde en ruim graag op. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C3: Ik hou mijn beloftes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C4: Ik ben een harde werker. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C5: Ik ben altijd voorbereid. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C6: Ik ben erg spontaan en reageer zonder na te denken. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C7: Ik doe de dingen die k doe altijd goed. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C8: Ik vergeet vaak dingen op de juiste plaats terug te leggen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_autonomie = (["Vraag A1: Ik heb een levendige fantasie. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A2: Ik vind kunst belangrijk. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A3: Ik ervaar sterke en gevarieerde emoties. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A4: Ik verkies afwisseling oven routine. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A5: Ik lees graag uitdagende boeken en artikelen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A6: Ik verkies politiek die voor verandering is en progressief. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A7: Ik laat mijn verbeelding graag de vrije loop. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A8: Ik zie de schoonheid van dingen die anderen niet opvallen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_extraversie = (["Vraag E1: Ik maak gemakkelijk vrienden. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E2: Ik hou van grote feesten en bijeenkomsten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E3: Ik neem graag de leiding in situaties en bij gebeurtenissen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E4: Ik heb moeite om anderen te benaderen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E5: Ik hou van opwinding en spanning. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E6: Ik ben een heel vrolijk persoon. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E7: Ik voel me op mijn gemak bij andere mensen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E8: Ik praat met veel verschillende mensen op feestjes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_emotionele_stabiliteit = (["Vraag ES1: Ik maak me veel zorgen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES2: Ik word snel boos. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES3: Ik voel me vaak verdrietig. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES4: Ik laat me regelmatig gaan wat betreft genieten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES5: Ik ben snel in paniek. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES6: Ik vrees vaak het ergste.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES7: Ik ben altijd bezig en druk met dingen.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES8: Ik raak snel geïrriteerd.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens." ])

# demografische vragen
print ("Hallo! Voordat we met de vragenlijst gaan beginnen, komen er een paar vragen over u. Zo kunnen we uw gegevens het best verwerken.")
Naam = input (Demografische_vragen [0])

while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])

invalide = True
while invalide:
  Leeftijd = int (input (Demografische_vragen [2]))
  if Leeftijd >=16 and Leeftijd <=99:
    invalide= False
  else:
    print ("Sorry" ,(Naam),", je moet tussen de 16 en 99 zijn")

# intro vragenlijst
print ("Welkom" ,(Naam),", je gaat nu een vragenlijst invullen voor één van de Big Five persoonijkheidstrekken.")
print ("Elk onderdeel heeft 8 vragen. Deze zullen ongeveer 2 minuten duren.")
print ("Je kunt kiezen uit: vriendelijkheid, emotionele stabiliteit, extraversie, consciëntieusheid en autonomie")

# Welk construct wil je meten
while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

# wil je nog een construct meten?
while Nog_een != "ja" and Nog_een != "nee":
 print ("Let op: het antwoord moet expliciet ja of nee zijn en het programma is hoofdlettergevoelig.")
 Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")

# Nee
 if Nog_een == "nee":
  print ("Bedankt voor je deelname!")

 # ja
 if Nog_een == "ja":
     Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
      print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
      Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     if Welk_construct == ("vriendelijkheid"):
        Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
        Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
        Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
        Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
        Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
        Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
        Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
        Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("consciëntieusheid"):
        Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
        Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
        Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
        Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
        Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
        Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
        Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
        Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("autonomie"):
        Antwoord_A1 = input (Vragenlijst_autonomie [0])
        Antwoord_A2 = input (Vragenlijst_autonomie [1])
        Antwoord_A3 = input (Vragenlijst_autonomie [2])
        Antwoord_A4 = input (Vragenlijst_autonomie [3])
        Antwoord_A5 = input (Vragenlijst_autonomie [4])
        Antwoord_A6 = input (Vragenlijst_autonomie [5])
        Antwoord_A7 = input (Vragenlijst_autonomie [6])
        Antwoord_A8 = input (Vragenlijst_autonomie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("extraversie"):
        Antwoord_E1 = input (Vragenlijst_extraversie [0])
        Antwoord_E2 = input (Vragenlijst_extraversie [1])
        Antwoord_E3 = input (Vragenlijst_extraversie [2])
        Antwoord_E4 = input (Vragenlijst_extraversie [3])
        Antwoord_E5 = input (Vragenlijst_extraversie [4])
        Antwoord_E6 = input (Vragenlijst_extraversie [5])
        Antwoord_E7 = input (Vragenlijst_extraversie [6])
        Antwoord_E8 = input (Vragenlijst_extraversie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("emotionele stabiliteit"):
        Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
        Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
        Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
        Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
        Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
        Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
        Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
        Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")

# opslaan antwoorden
antwoorden_demografische_vragen = [Naam, Leeftijd, Geslacht]
antwoorden_vriendelijkheid = [Antwoord_V1, Antwoord_V2, Antwoord_V3, Antwoord_V4, Antwoord_V5, Antwoord_V6, Antwoord_V7, Antwoord_V8]
antwoorden_consciëntieusheid = [Antwoord_C1, Antwoord_C2, Antwoord_C3, Antwoord_C4, Antwoord_C5, Antwoord_C6, Antwoord_C7, Antwoord_C8]
antwoorden_autonomie = [Antwoord_A1, Antwoord_A2, Antwoord_A3, Antwoord_A4, Antwoord_A5, Antwoord_A6, Antwoord_A7, Antwoord_A8]
antwoorden_extraversie = [Antwoord_E1, Antwoord_E2, Antwoord_E3, Antwoord_E4, Antwoord_E5, Antwoord_E6, Antwoord_E7, Antwoord_E8]
antwoorden_emotionele_stabiliteit = [Antwoord_ES1, Antwoord_ES2, Antwoord_ES3, Antwoord_ES4, Antwoord_ES5, Antwoord_ES6, Antwoord_ES7, Antwoord_ES8, ]

data = open("antwoorden vragenijst", "a")
data.writelines(str(antwoorden_demografische_vragen) + "\n")
data.writelines(str(antwoorden_vriendelijkheid) + "\n")
data.writelines(str(antwoorden_consciëntieusheid) + "\n")
data.writelines(str(antwoorden_autonomie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_emotionele_stabiliteit) + "\n")
data.close()
</code>```

答:
The reason it keeps printing that is because in your first while loop, vrag met the condition specified to keep looping, and there was no place for vrag to change value into one the the strings:

```<code>for Vragenlijst_vriendelijkheid in (list(range(0,8))):

# Because of the wile-loop, the for-loop only got to iterate once

 while Vragenlijst_vriendelijkheid != "Helemaal niet mee eens" and Vragenlijst_vriendelijkheidg != "Niet mee eens" and Vragenlijst_vriendelijkheid != "Neutraal" and Vragenlijst_vriendelijkheid != "Mee eens" and Vragenlijst_vriendelijkheid != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antd dient precies overgenomen te worden.")
</code>```

To fix that, change the while into a if:

```<code> if Vragenlijst_vriendelijkheid != "Helemaal niet mee eens" and Vragenlijst_vriendelijkheidg != "Niet mee eens" and Vragenlijst_vriendelijkheid != "Neutraal" and Vragenlijst_vriendelijkheid != "Mee eens" and Vragenlijst_vriendelijkheid != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antd dient precies overgenomen te worden.")
</code>```

Title: for and while loop combined

Body:
I'm trying to add a while for my question list of constructs. I want python to only allow answers like "helemaal mee oneens, mee oneens, etc).
I understand how I make this with simple code. But I don't know how I can make all those questions only accept input from the answers I want.
There is raw input, so people have to be able to type their answer. I tried this:

for Vragenlijst_vriendelijkheid in (list(range(0,8))):
 while Vragenlijst_vriendelijkheid (list(range(0,8))) != "Helemaal niet mee eens" and != "Niet mee eens" and != "Neutraal" and != "Mee eens" and != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antwoord dient precies overgenomen te worden.")

That didn't work out quite well.. It just printed a lot of "het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden." Can anybody help me?
I'm not good at programming, i have to do this for a school assignment and i really don't get it..

while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

this is the whole file:

# antwoorden demografische vragen
Naam = ("onbekend")
Geslacht = ("onbekend")
Leeftijd = ("onbekend")

# overige vragen
Welk_construct = ("onbekend")
Nog_een = ("onbekend")

# antwoorden Vragenlijst_vriendelijkheid
Antwoord_V1 = ("onbekend")
Antwoord_V2 = ("onbekend")
Antwoord_V3 = ("onbekend")
Antwoord_V4 = ("onbekend")
Antwoord_V5 = ("onbekend")
Antwoord_V6 = ("onbekend")
Antwoord_V7 = ("onbekend")
Antwoord_V8 = ("onbekend")

# antwoorden Vragenlijst_consiëntieusheid
Antwoord_C1 = ("onbekend")
Antwoord_C2 = ("onbekend")
Antwoord_C3 = ("onbekend")
Antwoord_C4 = ("onbekend")
Antwoord_C5 = ("onbekend")
Antwoord_C6 = ("onbekend")
Antwoord_C7 = ("onbekend")
Antwoord_C8 = ("onbekend")

# antwoorden Vragenlijst_autonomie
Antwoord_A1 = ("onbekend")
Antwoord_A2 = ("onbekend")
Antwoord_A3 = ("onbekend")
Antwoord_A4 = ("onbekend")
Antwoord_A5 = ("onbekend")
Antwoord_A6 = ("onbekend")
Antwoord_A7 = ("onbekend")
Antwoord_A8 = ("onbekend")

# antwoorden Vragenlijst_extraversie
Antwoord_E1 = ("onbekend")
Antwoord_E2 = ("onbekend")
Antwoord_E3 = ("onbekend")
Antwoord_E4 = ("onbekend")
Antwoord_E5 = ("onbekend")
Antwoord_E6 = ("onbekend")
Antwoord_E7 = ("onbekend")
Antwoord_E8 = ("onbekend")

# antwoorden Vragenijst_emotionele_stabiliteit
Antwoord_ES1 = ("onbekend")
Antwoord_ES2 = ("onbekend")
Antwoord_ES3 = ("onbekend")
Antwoord_ES4 = ("onbekend")
Antwoord_ES5 = ("onbekend")
Antwoord_ES6 = ("onbekend")
Antwoord_ES7 = ("onbekend")
Antwoord_ES8 = ("onbekend")

# vragenlijsten

Demografische_vragen = (["Wat is uw naam? Typ hier uw naam.", "Wat is uw geslacht? Typ hier Man, Vrouw of Anders.", "Wat is uw leeftijd? Typ hier uw leeftijd in jaren."])

Vragenlijst_vriendelijkheid = (["Vraag V1: Ik heb vertrouwen in anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", " Vraag V2: Ik gebruik en manipuleer anderen om mijn zin te krijgen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V3: Ik help anderen graag. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraaga V4: Ik hou van strijd en een stevige discussie. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V5: Ik vind mezelf beter dan anderen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V6: Ik heb medelijden met daklozen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V7: Ik denk dat mensen in principe goede bedoelingen hebben. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag V8: Ik vind het niet erg om te bedriegen om hogerop te komen. Typ hier: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_consciëntieusheid = (["Vraag C1: Ik breng taken tot een goed einde. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C2: Ik hou niet van wandorde en ruim graag op. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C3: Ik hou mijn beloftes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C4: Ik ben een harde werker. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C5: Ik ben altijd voorbereid. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C6: Ik ben erg spontaan en reageer zonder na te denken. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C7: Ik doe de dingen die k doe altijd goed. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag C8: Ik vergeet vaak dingen op de juiste plaats terug te leggen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_autonomie = (["Vraag A1: Ik heb een levendige fantasie. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A2: Ik vind kunst belangrijk. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A3: Ik ervaar sterke en gevarieerde emoties. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A4: Ik verkies afwisseling oven routine. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A5: Ik lees graag uitdagende boeken en artikelen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A6: Ik verkies politiek die voor verandering is en progressief. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A7: Ik laat mijn verbeelding graag de vrije loop. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag A8: Ik zie de schoonheid van dingen die anderen niet opvallen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_extraversie = (["Vraag E1: Ik maak gemakkelijk vrienden. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E2: Ik hou van grote feesten en bijeenkomsten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E3: Ik neem graag de leiding in situaties en bij gebeurtenissen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E4: Ik heb moeite om anderen te benaderen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E5: Ik hou van opwinding en spanning. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E6: Ik ben een heel vrolijk persoon. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E7: Ik voel me op mijn gemak bij andere mensen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag E8: Ik praat met veel verschillende mensen op feestjes. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens."])

Vragenlijst_emotionele_stabiliteit = (["Vraag ES1: Ik maak me veel zorgen. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES2: Ik word snel boos. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES3: Ik voel me vaak verdrietig. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES4: Ik laat me regelmatig gaan wat betreft genieten. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES5: Ik ben snel in paniek. Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES6: Ik vrees vaak het ergste.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES7: Ik ben altijd bezig en druk met dingen.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens.", "Vraag ES8: Ik raak snel geïrriteerd.  Typ hieronder: Helemaal niet mee eens, Niet mee eens, Neutraal, Mee eens, Helemaal mee eens." ])

# demografische vragen
print ("Hallo! Voordat we met de vragenlijst gaan beginnen, komen er een paar vragen over u. Zo kunnen we uw gegevens het best verwerken.")
Naam = input (Demografische_vragen [0])

while Geslacht != "Man" and Geslacht != "man" and Geslacht != "Vrouw"  and Geslacht != "vrouw"and Geslacht != "Anders" and Geslacht != "anders":
  Geslacht = input (Demografische_vragen [1])

invalide = True
while invalide:
  Leeftijd = int (input (Demografische_vragen [2]))
  if Leeftijd >=16 and Leeftijd <=99:
    invalide= False
  else:
    print ("Sorry" ,(Naam),", je moet tussen de 16 en 99 zijn")

# intro vragenlijst
print ("Welkom" ,(Naam),", je gaat nu een vragenlijst invullen voor één van de Big Five persoonijkheidstrekken.")
print ("Elk onderdeel heeft 8 vragen. Deze zullen ongeveer 2 minuten duren.")
print ("Je kunt kiezen uit: vriendelijkheid, emotionele stabiliteit, extraversie, consciëntieusheid en autonomie")

# Welk construct wil je meten
while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
  print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
  Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
  if Welk_construct == ("vriendelijkheid"):
     Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
     Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
     Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
     Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
     Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
     Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
     Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
     Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
  elif Welk_construct == ("consciëntieusheid"):
     Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
     Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
     Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
     Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
     Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
     Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
     Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
     Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
  elif Welk_construct == ("autonomie"):
     Antwoord_A1 = input (Vragenlijst_autonomie [0])
     Antwoord_A2 = input (Vragenlijst_autonomie [1])
     Antwoord_A3 = input (Vragenlijst_autonomie [2])
     Antwoord_A4 = input (Vragenlijst_autonomie [3])
     Antwoord_A5 = input (Vragenlijst_autonomie [4])
     Antwoord_A6 = input (Vragenlijst_autonomie [5])
     Antwoord_A7 = input (Vragenlijst_autonomie [6])
     Antwoord_A8 = input (Vragenlijst_autonomie [7])
  elif Welk_construct == ("extraversie"):
     Antwoord_E1 = input (Vragenlijst_extraversie [0])
     Antwoord_E2 = input (Vragenlijst_extraversie [1])
     Antwoord_E3 = input (Vragenlijst_extraversie [2])
     Antwoord_E4 = input (Vragenlijst_extraversie [3])
     Antwoord_E5 = input (Vragenlijst_extraversie [4])
     Antwoord_E6 = input (Vragenlijst_extraversie [5])
     Antwoord_E7 = input (Vragenlijst_extraversie [6])
     Antwoord_E8 = input (Vragenlijst_extraversie [7])
  elif Welk_construct == ("emotionele stabiliteit"):
     Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
     Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
     Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
     Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
     Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
     Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
     Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
     Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])

# wil je nog een construct meten?
while Nog_een != "ja" and Nog_een != "nee":
 print ("Let op: het antwoord moet expliciet ja of nee zijn en het programma is hoofdlettergevoelig.")
 Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")

# Nee
 if Nog_een == "nee":
  print ("Bedankt voor je deelname!")

 # ja
 if Nog_een == "ja":
     Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     while Welk_construct != "vriendelijkheid" and Welk_construct != "emotionele stabiliteit" and Welk_construct != "extraversie" and Welk_construct != "consciëntieusheid" and Welk_construct != "autonomie":
      print ("Let op: het programma is hoofdletter gevoelig. Er dient niet met hoofdletters geschreven te worden.")
      Welk_construct = input ("Welk construct wilt je meten? Typ hier een van de vijf constructen.")
     if Welk_construct == ("vriendelijkheid"):
        Antwoord_V1 = input (Vragenlijst_vriendelijkheid [0])
        Antwoord_V2 = input (Vragenlijst_vriendelijkheid [1])
        Antwoord_V3 = input (Vragenlijst_vriendelijkheid [2])
        Antwoord_V4 = input (Vragenlijst_vriendelijkheid [3])
        Antwoord_V5 = input (Vragenlijst_vriendelijkheid [4])
        Antwoord_V6 = input (Vragenlijst_vriendelijkheid [5])
        Antwoord_V7 = input (Vragenlijst_vriendelijkheid [6])
        Antwoord_V8 = input (Vragenlijst_vriendelijkheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("consciëntieusheid"):
        Antwoord_C1 = input (Vragenlijst_consciëntieusheid [0])
        Antwoord_C2 = input (Vragenlijst_consciëntieusheid [1])
        Antwoord_C3 = input (Vragenlijst_consciëntieusheid [2])
        Antwoord_C4 = input (Vragenlijst_consciëntieusheid [3])
        Antwoord_C5 = input (Vragenlijst_consciëntieusheid [4])
        Antwoord_C6 = input (Vragenlijst_consciëntieusheid [5])
        Antwoord_C7 = input (Vragenlijst_consciëntieusheid [6])
        Antwoord_C8 = input (Vragenlijst_consciëntieusheid [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("autonomie"):
        Antwoord_A1 = input (Vragenlijst_autonomie [0])
        Antwoord_A2 = input (Vragenlijst_autonomie [1])
        Antwoord_A3 = input (Vragenlijst_autonomie [2])
        Antwoord_A4 = input (Vragenlijst_autonomie [3])
        Antwoord_A5 = input (Vragenlijst_autonomie [4])
        Antwoord_A6 = input (Vragenlijst_autonomie [5])
        Antwoord_A7 = input (Vragenlijst_autonomie [6])
        Antwoord_A8 = input (Vragenlijst_autonomie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("extraversie"):
        Antwoord_E1 = input (Vragenlijst_extraversie [0])
        Antwoord_E2 = input (Vragenlijst_extraversie [1])
        Antwoord_E3 = input (Vragenlijst_extraversie [2])
        Antwoord_E4 = input (Vragenlijst_extraversie [3])
        Antwoord_E5 = input (Vragenlijst_extraversie [4])
        Antwoord_E6 = input (Vragenlijst_extraversie [5])
        Antwoord_E7 = input (Vragenlijst_extraversie [6])
        Antwoord_E8 = input (Vragenlijst_extraversie [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")
     elif Welk_construct == ("emotionele stabiliteit"):
        Antwoord_ES1 = input (Vragenlijst_emotionele_stabiliteit [0])
        Antwoord_ES2 = input (Vragenlijst_emotionele_stabiliteit [1])
        Antwoord_ES3 = input (Vragenlijst_emotionele_stabiliteit [2])
        Antwoord_ES4 = input (Vragenlijst_emotionele_stabiliteit [3])
        Antwoord_ES5 = input (Vragenlijst_emotionele_stabiliteit [4])
        Antwoord_ES6 = input (Vragenlijst_emotionele_stabiliteit [5])
        Antwoord_ES7 = input (Vragenlijst_emotionele_stabiliteit [6])
        Antwoord_ES8 = input (Vragenlijst_emotionele_stabiliteit [7])
        Nog_een = input ("Wil je nog een construct meten? Typ ja of nee.")
        if Nog_een == "nee":
         print ("Bedankt voor je deelname!")

# opslaan antwoorden
antwoorden_demografische_vragen = [Naam, Leeftijd, Geslacht]
antwoorden_vriendelijkheid = [Antwoord_V1, Antwoord_V2, Antwoord_V3, Antwoord_V4, Antwoord_V5, Antwoord_V6, Antwoord_V7, Antwoord_V8]
antwoorden_consciëntieusheid = [Antwoord_C1, Antwoord_C2, Antwoord_C3, Antwoord_C4, Antwoord_C5, Antwoord_C6, Antwoord_C7, Antwoord_C8]
antwoorden_autonomie = [Antwoord_A1, Antwoord_A2, Antwoord_A3, Antwoord_A4, Antwoord_A5, Antwoord_A6, Antwoord_A7, Antwoord_A8]
antwoorden_extraversie = [Antwoord_E1, Antwoord_E2, Antwoord_E3, Antwoord_E4, Antwoord_E5, Antwoord_E6, Antwoord_E7, Antwoord_E8]
antwoorden_emotionele_stabiliteit = [Antwoord_ES1, Antwoord_ES2, Antwoord_ES3, Antwoord_ES4, Antwoord_ES5, Antwoord_ES6, Antwoord_ES7, Antwoord_ES8, ]

data = open("antwoorden vragenijst", "a")
data.writelines(str(antwoorden_demografische_vragen) + "\n")
data.writelines(str(antwoorden_vriendelijkheid) + "\n")
data.writelines(str(antwoorden_consciëntieusheid) + "\n")
data.writelines(str(antwoorden_autonomie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_extraversie) + "\n")
data.writelines(str(antwoorden_emotionele_stabiliteit) + "\n")
data.close()

Body:
The reason it keeps printing that is because in your first while loop, vrag met the condition specified to keep looping, and there was no place for vrag to change value into one the the strings:

for Vragenlijst_vriendelijkheid in (list(range(0,8))):

# Because of the wile-loop, the for-loop only got to iterate once

 while Vragenlijst_vriendelijkheid != "Helemaal niet mee eens" and Vragenlijst_vriendelijkheidg != "Niet mee eens" and Vragenlijst_vriendelijkheid != "Neutraal" and Vragenlijst_vriendelijkheid != "Mee eens" and Vragenlijst_vriendelijkheid != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antd dient precies overgenomen te worden.")

To fix that, change the while into a if:

 if Vragenlijst_vriendelijkheid != "Helemaal niet mee eens" and Vragenlijst_vriendelijkheidg != "Niet mee eens" and Vragenlijst_vriendelijkheid != "Neutraal" and Vragenlijst_vriendelijkheid != "Mee eens" and Vragenlijst_vriendelijkheid != "Helemaal mee eens":
   print ("Let op: deze vragen zijn hoofdletter gevoelig, elk antd dient precies overgenomen te worden.")


问:
How can I solve this Hadoop core-site.xml problem?
I'm using Hadoop-2.7.6 and want to build fully-distributed.
I gave 3 VM servers and they can only use 32222 port.

In /etc/hosts,

```<code>1xx.xxx.xxx.xx1 namenode
1xx.xxx.xxx.xx2 slave1
1xx.xxx.xxx.xx3 slave2
</code>```

Then in core-site.xml,

```<code><property>
<name>fs.default.name</name>
<value>hdfs://namenode:32222</value>
</property>
</code>```

But when I executed hdfs dfs -ls,

```<code>ls: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "hostname/xxx.xxx.xxx.xxx"; destination host is: "namenode":32222
</code>```

this error message occur.
Moreover, when I executed start-all.sh

```<code>Starting namenodes on [namenode]
</code>```

then other slave node occur time out.
How can solve this problem..?

答:
Property fs.default.name has been deprecated and replaced by fs.defaultFS
https://stackoverflow.com/a/30480984/7857701

<property>
    <name>fs.defaultFs</name>
    <value>hdfs://namenode:32222</value>
</property>
```

Body:
I'm using Hadoop-2.7.6 and want to build fully-distributed.
I gave 3 VM servers and they can only use 32222 port.

In /etc/hosts,

1xx.xxx.xxx.xx1 namenode
1xx.xxx.xxx.xx2 slave1
1xx.xxx.xxx.xx3 slave2

Then in core-site.xml,

<property>
<name>fs.default.name</name>
<value>hdfs://namenode:32222</value>
</property>

But when I executed hdfs dfs -ls,

ls: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.; Host Details : local host is: "hostname/xxx.xxx.xxx.xxx"; destination host is: "namenode":32222

this error message occur.
Moreover, when I executed start-all.sh

Starting namenodes on [namenode]

then other slave node occur time out.
How can solve this problem..?


问:
java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar error using Selenium through Maven in Spring Boot
I have been running in to various issues while trying to configure selenium webdriver to test my spring boot application. Every time I put the selenium dependency in to my pom.xml it seems to corrupt my m2 repository, or that is what I think.

This is the dependency:

```<code><dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.141.59</version>
</dependency>
</code>```

This is the error message:

```<code>Exception in thread "main" java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/C:/Users/Usuario/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar
at org.springframework.boot.devtools.restart.ChangeableUrls.getUrlsFromClassPathOfJarManifestIfPossible(ChangeableUrls.java:132)
at org.springframework.boot.devtools.restart.ChangeableUrls.fromClassLoader(ChangeableUrls.java:98)
at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getUrls(DefaultRestartInitializer.java:92)
at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getInitialUrls(DefaultRestartInitializer.java:56)
at org.springframework.boot.devtools.restart.Restarter.<init>(Restarter.java:142)
at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:556)
at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartingEvent(RestartApplicationListener.java:76)
at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:50)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:69)
at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:48)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at pe.backend.BackendApplication.main(BackendApplication.java:10)
</code>```

I have tried cleaning my m2 repository various times and adding different versions of the dependency, but It doesn’t seem to solve it. I have also tried using clean install, but it shows a build error if I have put the selenium dependency.

答:
This error message...

```<code>Exception in thread "main" java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/C:/Users/Usuario/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar
</code>```

...implies that one of the jars in your maven cache corrupted.

In your case, it seems the the following file got corrupted:

```<code>file:/C:/Users/Usuario/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar
</code>```

Solution

You need to remove the specific jar from your maven cache and re-build your application.

As you have already tried cleaning the m2 repository various times through clean install but the error persists you may need to hard delete this particular jar and rebuild your application.

Outro

You can find a relevant discussion in:

Devtools startup exception

Body:
I have been running in to various issues while trying to configure selenium webdriver to test my spring boot application. Every time I put the selenium dependency in to my pom.xml it seems to corrupt my m2 repository, or that is what I think.

This is the dependency:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.141.59</version>
</dependency>

This is the error message:

Exception in thread "main" java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/C:/Users/Usuario/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar
at org.springframework.boot.devtools.restart.ChangeableUrls.getUrlsFromClassPathOfJarManifestIfPossible(ChangeableUrls.java:132)
at org.springframework.boot.devtools.restart.ChangeableUrls.fromClassLoader(ChangeableUrls.java:98)
at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getUrls(DefaultRestartInitializer.java:92)
at org.springframework.boot.devtools.restart.DefaultRestartInitializer.getInitialUrls(DefaultRestartInitializer.java:56)
at org.springframework.boot.devtools.restart.Restarter.<init>(Restarter.java:142)
at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:556)
at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartingEvent(RestartApplicationListener.java:76)
at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:50)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:69)
at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:48)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at pe.backend.BackendApplication.main(BackendApplication.java:10)

I have tried cleaning my m2 repository various times and adding different versions of the dependency, but It doesn’t seem to solve it. I have also tried using clean install, but it shows a build error if I have put the selenium dependency.

Body:
This error message...

Exception in thread "main" java.lang.IllegalStateException: Failed to read Class-Path attribute from manifest of jar file:/C:/Users/Usuario/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar

...implies that one of the jars in your maven cache corrupted.

In your case, it seems the the following file got corrupted:

file:/C:/Users/Usuario/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar

Solution

You need to remove the specific jar from your maven cache and re-build your application.

As you have already tried cleaning the m2 repository various times through clean install but the error persists you may need to hard delete this particular jar and rebuild your application.

Outro

You can find a relevant discussion in:

Devtools startup exception


问:
group by filtered pandas dataframe and select latest in each group
I'm facing a problem with filtered dataframe and groupby

Say I have this dataframe

```
    id     product   date
0   220    6647     2015-09-01
1   220    6647     2014-09-03
2   220    6647     2014-10-16
3   826    3380     2014-11-11
4   826    3380     2015-12-09
5   826    3380     2015-05-19
6   901    4555     2015-09-01
7   901    4555     2014-10-05
8   901    4555     2014-11-01
```

I'd like to first select rows of year 2015 and then groupby id and get the latest by date

I've read this article, that works great on the entire df

but it seems it's not working if I first try to filter the df like this

```<code>my_date = datetime.datetime(2014, 12, 31)
df = df[df.date>my_date]
</code>```

now if I run the following code

```<code>df.loc[df.groupby('id').date.idxmax()]
</code>```

it gives my the following error

attempt to get argmax of an empty sequence

Any help would be appreciated :)
thanks

答:
In df = df[date>my_date] you have only date, not df.date, so that's probably causing the error.

This code:

```<code>import pandas as pd
from io import StringIO
from datetime import datetime

txt = '''id     product   date
220    6647     2015-09-01
220    6647     2014-09-03
220    6647     2014-10-16
826    3380     2014-11-11
826    3380     2015-12-09
826    3380     2015-05-19
901    4555     2015-09-01
901    4555     2014-10-05
901    4555     2014-11-01'''

df = pd.read_fwf(StringIO(txt))
df['date'] = pd.to_datetime(df['date']) # convert date to datetime

my_date = datetime(2014, 12, 31)
df = df[df.date>my_date]

print(df.loc[df.groupby('id').date.idxmax()])
</code>```

Prints:

```<code>    id  product       date
0  220     6647 2015-09-01
4  826     3380 2015-12-09
6  901     4555 2015-09-01
</code>```

Body:
I'm facing a problem with filtered dataframe and groupby

Say I have this dataframe

    id     product   date
0   220    6647     2015-09-01
1   220    6647     2014-09-03
2   220    6647     2014-10-16
3   826    3380     2014-11-11
4   826    3380     2015-12-09
5   826    3380     2015-05-19
6   901    4555     2015-09-01
7   901    4555     2014-10-05
8   901    4555     2014-11-01

I'd like to first select rows of year 2015 and then groupby id and get the latest by date

I've read this article, that works great on the entire df

but it seems it's not working if I first try to filter the df like this

my_date = datetime.datetime(2014, 12, 31)
df = df[df.date>my_date]

now if I run the following code

df.loc[df.groupby('id').date.idxmax()]

it gives my the following error

attempt to get argmax of an empty sequence

Any help would be appreciated :)
thanks

Body:
In df = df[date>my_date] you have only date, not df.date, so that's probably causing the error.

This code:

import pandas as pd
from io import StringIO
from datetime import datetime

txt = '''id     product   date
220    6647     2015-09-01
220    6647     2014-09-03
220    6647     2014-10-16
826    3380     2014-11-11
826    3380     2015-12-09
826    3380     2015-05-19
901    4555     2015-09-01
901    4555     2014-10-05
901    4555     2014-11-01'''

df = pd.read_fwf(StringIO(txt))
df['date'] = pd.to_datetime(df['date']) # convert date to datetime

my_date = datetime(2014, 12, 31)
df = df[df.date>my_date]

print(df.loc[df.groupby('id').date.idxmax()])

Prints:

    id  product       date
0  220     6647 2015-09-01
4  826     3380 2015-12-09
6  901     4555 2015-09-01


问:
how to use node.js module system on the clientside
I would like to use the CommonJS module system in a clientside javascript application. I chose nodejs as implementation but can't find any tutorial or docs on how to use nodejs clientside, ie without using node application.js

I included node.js like this in my html page:

```<code><script type="text/javascript" src="node.js"></script>
</code>```

Note that I didn't make nodejs on my local machine, I'm on Windows anyway (I'm aware of the Cygwin option).
When I want to use the require function in my own javascript it says it's undefined.

```<code>var logger = require('./logger');
</code>```

My question is, is it possible to use nodejs like this?

答:
The accepted answer is correct when it comes to RequireJS. But, fast-forward to 2020 and we now have ES modules pretty much on every browser except IE <= 11.

So, to answer your question "how to use node.js module system on the clientside". Let's start with the fact that you could leverage ES modules already, e.g.

```<code><!DOCTYPE html>
<head>
  <meta charset="utf-8" />
  <title>Hello 2020</title>
  <!-- load the app as a module, also use defer to execute last -->
  <script type="module" src="./app.js"></script>
</head>

<html lang="en">
  <body>
      <div id="app">
          <h1>Demo</h1>
      </div>
  </body>
</html>
</code>```

app.js

```<code>import { hello } from './utils.js'

window.addEventListener('DOMContentLoaded', function (e) {
    document.getElementsByTagName('h1')[0].innerText = hello('world');
});
</code>```

util.js

```<code>function hello(text) {
    return `$hello {text}`;
}

export { hello };
</code>```

Now let's assume you want to use an npm package in your browser (assuming this package can run on both browser and node). In that case, you may want to check out
Snowpack.

Snowpack 2.0 is a build system designed for this new era of web
development. Snowpack removes the bundler from your dev environment,
leveraging native ES Module (ESM) support to serve built files
directly to the browser

In other words, you can use npm packages thus allowing you to use the "node module system" in your client application.

ContentLicense: CC BY-SA 2.5

Body:
I would like to use the CommonJS module system in a clientside javascript application. I chose nodejs as implementation but can't find any tutorial or docs on how to use nodejs clientside, ie without using node application.js

I included node.js like this in my html page:

Note that I didn't make nodejs on my local machine, I'm on Windows anyway (I'm aware of the Cygwin option).
When I want to use the require function in my own javascript it says it's undefined.

var logger = require('./logger');

My question is, is it possible to use nodejs like this?

Body:
The accepted answer is correct when it comes to RequireJS. But, fast-forward to 2020 and we now have ES modules pretty much on every browser except IE <= 11.

So, to answer your question "how to use node.js module system on the clientside". Let's start with the fact that you could leverage ES modules already, e.g.

<!DOCTYPE html>
<head>
  <meta charset="utf-8" />
  <title>Hello 2020</title>
  <!-- load the app as a module, also use defer to execute last -->
  <script type="module" src="./app.js"></script>
</head>

<html lang="en">
  <body>
      <div id="app">
          <h1>Demo</h1>
      </div>
  </body>
</html>

app.js

import { hello } from './utils.js'

window.addEventListener('DOMContentLoaded', function (e) {
    document.getElementsByTagName('h1')[0].innerText = hello('world');
});

util.js

function hello(text) {
    return `$hello {text}`;
}

export { hello };

Now let's assume you want to use an npm package in your browser (assuming this package can run on both browser and node). In that case, you may want to check out
Snowpack.

Snowpack 2.0 is a build system designed for this new era of web
development. Snowpack removes the bundler from your dev environment,
leveraging native ES Module (ESM) support to serve built files
directly to the browser

In other words, you can use npm packages thus allowing you to use the "node module system" in your client application.


问:
Usage of DataKeyNames in an ASP.NET GridView?
In which cases should I use a GridView's property DataKeyNames?

Why are multiple columns/fields allowed here?

答:
Gets or sets an array that contains the names of the primary key fields for the items displayed in a GridView control.

GridView.DataKeyNames Property

GridView.DataKeys Property


问:
Volley: http requests slow
If I make two HTTP requests to the same URL, one with only HttpClient and the other with Volley, the Volley requests takes much longer.

For example, in my test environment:

using HttpClient directly to request google.com averages about 250ms

using Volley to request google.com averages about 750ms

here's a log dump of a sample Volley request:

```<code>11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (773  ms) [ ] http://google.com 0xa46e044c NORMAL 1
11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (+0   ) [ 1] add-to-queue
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+0   ) [93] cache-queue-take
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+7   ) [93] cache-hit-expired
11:44:14.796: D/Volley(863): [1] MarkerLog.finish: (+1   ) [97] network-queue-take
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+722 ) [97] network-http-complete
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+20  ) [97] network-parse-complete
11:44:14.816: D/Volley(863): [1] MarkerLog.finish: (+16  ) [97] network-cache-written
11:44:14.826: D/Volley(863): [1] MarkerLog.finish: (+0   ) [97] post-response
11:44:14.836: D/Volley(863): [1] MarkerLog.finish: (+7   ) [ 1] done
</code>```

as you can see, the bottleneck is in the actual HTTP request. Why is it so much slower?

答:
Volley usually caches the network responses which make it slower. If you still want to use volley you can clear the cache to make it faster eventually.

```<code>AppController.getInstance().getRequestQueue().getCache().remove(key);
</code>```

You can create a handler event to run this automatically every 2 minutes or so. Hope that helps:))

Title: Volley: http requests slow

Body:
If I make two HTTP requests to the same URL, one with only HttpClient and the other with Volley, the Volley requests takes much longer.

For example, in my test environment:

using HttpClient directly to request google.com averages about 250ms

using Volley to request google.com averages about 750ms

here's a log dump of a sample Volley request:

11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (773  ms) [ ] http://google.com 0xa46e044c NORMAL 1
11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (+0   ) [ 1] add-to-queue
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+0   ) [93] cache-queue-take
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+7   ) [93] cache-hit-expired
11:44:14.796: D/Volley(863): [1] MarkerLog.finish: (+1   ) [97] network-queue-take
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+722 ) [97] network-http-complete
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+20  ) [97] network-parse-complete
11:44:14.816: D/Volley(863): [1] MarkerLog.finish: (+16  ) [97] network-cache-written
11:44:14.826: D/Volley(863): [1] MarkerLog.finish: (+0   ) [97] post-response
11:44:14.836: D/Volley(863): [1] MarkerLog.finish: (+7   ) [ 1] done

as you can see, the bottleneck is in the actual HTTP request. Why is it so much slower?

Body:
Volley usually caches the network responses which make it slower. If you still want to use volley you can clear the cache to make it faster eventually.

AppController.getInstance().getRequestQueue().getCache().remove(key);

You can create a handler event to run this automatically every 2 minutes or so. Hope that helps:))


问:
How to replace input arguments using ByteBuddy's @Advice.AllArguments?
I am using ByteBuddy's @Advice to transform my classes and it works fine until I try to replace input arguments.

I have a FooService with a join method which just joins two strings with a space.

public class FooService {
    public String join(String message, String message1) {
        return message + " " + message1;
    }
}
```

<p>And I have another method which takes a <code>Object[] args</code> array input and changes elements in the array.</p>

<pre class="lang-java prettyprint-override"><code>    public static ArgsProcessor argsProcessor = args -> {
        args[0] = args[0] + "-suffix";
        args[1] = "replaced";
    };
</code>```

I've tried different ways to use the argsProcessor to manipulate the input arguments in @Advice.OnMethodEnter method. For me, the following advice implementations are almost equivalent and should all work, somehow only Advice1 works.

    public static class Advice1 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            Object[] newArgs = Arrays.copyOf(args, args.length);
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(newArgs);
            args = newArgs;
        }
    }

    public static class Advice2 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            Object[] newArgs = new Object[args.length];
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(args);
            System.arraycopy(args, 0, newArgs, 0, args.length);
            args = newArgs;
        }
    }

    public static class Advice3 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            Object[] newArgs = Arrays.copyOf(args, args.length);
            try {
                ArgsProcessor argsProcessor = Demo.argsProcessor;
                argsProcessor.process(newArgs);
                args = newArgs;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    public static class Advice4 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(args);
        }
    }

    public static class Advice5 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(args);
            args = Arrays.copyOf(args, args.length);
        }
    }
```

<p>Output</p>

```Advice1 a-suffix replaced
Advice2 a b
Advice3 a b
Advice4 a b
Advice5 a b
```

The code snippet https://gist.github.com/raptium/ab7830e5d7f7cba43bbd2c2a5c7b38e0

答:
Running your code, I get

```<code>Advice1 a-suffix replaced
Advice2 a b
Advice3 a-suffix replaced
Advice4 a b
Advice5 a b
</code>```

what is what I expect. Byte Buddy uses advice methods as templates. This code is not really exeucted. When you read args in your method, Byte Buddy creates a new array every time.

Therefore, computing args == args would return false since Byte Buddy creates a new array containing all arguments every time! If you change the args array, you have to write it back for Byte Buddy to discover the corresponding byte code and to map it back to an assignment.

Body:
I am using ByteBuddy's @Advice to transform my classes and it works fine until I try to replace input arguments.

I have a FooService with a join method which just joins two strings with a space.

public class FooService {
    public String join(String message, String message1) {
        return message + " " + message1;
    }
}

And I have another method which takes a Object[] args array input and changes elements in the array.

    public static ArgsProcessor argsProcessor = args -> {
        args[0] = args[0] + "-suffix";
        args[1] = "replaced";
    };

I've tried different ways to use the argsProcessor to manipulate the input arguments in @Advice.OnMethodEnter method. For me, the following advice implementations are almost equivalent and should all work, somehow only Advice1 works.

    public static class Advice1 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            Object[] newArgs = Arrays.copyOf(args, args.length);
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(newArgs);
            args = newArgs;
        }
    }

    public static class Advice2 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            Object[] newArgs = new Object[args.length];
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(args);
            System.arraycopy(args, 0, newArgs, 0, args.length);
            args = newArgs;
        }
    }

    public static class Advice3 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            Object[] newArgs = Arrays.copyOf(args, args.length);
            try {
                ArgsProcessor argsProcessor = Demo.argsProcessor;
                argsProcessor.process(newArgs);
                args = newArgs;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    public static class Advice4 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(args);
        }
    }

    public static class Advice5 {
        @Advice.OnMethodEnter
        public static void onEnter(@Advice.AllArguments(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object[] args) {
            ArgsProcessor argsProcessor = Demo.argsProcessor;
            argsProcessor.process(args);
            args = Arrays.copyOf(args, args.length);
        }
    }

Output

Advice1 a-suffix replaced
Advice2 a b
Advice3 a b
Advice4 a b
Advice5 a b

The code snippet https://gist.github.com/raptium/ab7830e5d7f7cba43bbd2c2a5c7b38e0

Body:
Running your code, I get

Advice1 a-suffix replaced
Advice2 a b
Advice3 a-suffix replaced
Advice4 a b
Advice5 a b

what is what I expect. Byte Buddy uses advice methods as templates. This code is not really exeucted. When you read args in your method, Byte Buddy creates a new array every time.

Therefore, computing args == args would return false since Byte Buddy creates a new array containing all arguments every time! If you change the args array, you have to write it back for Byte Buddy to discover the corresponding byte code and to map it back to an assignment.


问:
regex for splitting a string while ignoring the brackets
I want to split a string with space-character but ignoring the space between two brackets.

The code i used is:

```<code>String s = "hello (split this) string";
String reg = "(?<=([^\\(].*))( )(?=(.*[^\\)]))";
System.out.println(Arrays.toString(s.split(reg));
</code>```

My expected output is:

```<code>[hello , (split this) , string]
</code>```

but i get this error

Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 12
  (?<=([^(].))z(?=(.*[^)]))  *

I need a regex to get the expected output.

So, somebody please help.

答:
Try "(?:[^ (]+|(?>\\([^()]*\\))|\\()+(?=[ ]|$)"

notes

use to match all elements instead of split

will match unbalanced parens and use a atomic group on paren like ( kk hh )

demo

Body:
I want to split a string with space-character but ignoring the space between two brackets.

The code i used is:

String s = "hello (split this) string";
String reg = "(?<=([^\\(].*))( )(?=(.*[^\\)]))";
System.out.println(Arrays.toString(s.split(reg));

My expected output is:

[hello , (split this) , string]

but i get this error

Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 12
  (?<=([^(].))z(?=(.*[^)]))  *

I need a regex to get the expected output.

So, somebody please help.


问:
Display NULL values in MariaDB (LEFT JOIN gives wrong values)
So I am attempting a query selection that SUM's all minutes from an actor's role in 'Sci-Fi' films.
I get the correct values when I do INNER JOIN, but it does not display the NULL values, then when I do LEFT JOIN I get completely different values that are much higher than expected.
Here is the query selection

```<code>SELECT a.actor_id, a.first_name, a.last_name, SUM(allfilms.length)
    AS 'total_combined_film_length'
FROM actor a
LEFT JOIN film_actor film_a ON a.actor_id = film_a.actor_id
LEFT JOIN film allfilms ON film_a.film_id = allfilms.film_id
LEFT JOIN film_category film_c ON allfilms.film_id = film_c.film_id
INNER JOIN category c on film_c.category_id = c.category_id && c.name='Sci-Fi'
GROUP BY a.actor_id
ORDER BY (a.actor_id) DESC;
</code>```

The result gives me:

```<code>+----------+-------------+--------------+----------------------------+
| actor_id | first_name  | last_name    | total_combined_film_length |
+----------+-------------+--------------+----------------------------+
|      200 | THORA       | TEMPLE       |                        287 |
|      198 | MARY        | KEITEL       |                        314 |
|      197 | REESE       | WEST         |                        190 |
|      196 | BELA        | WALKEN       |                         59 |
|      195 | JAYNE       | SILVERSTONE  |                        263 |
|      193 | BURT        | TEMPLE       |                        113 |
</code>```

When in fact I would like the following entries in there as well:

```<code>|      199 | JOHN        | SMITH       |                           0 |
|      194 | RODGER      | FED         |                           0 |
</code>```

Here is what it looks like when I do LEFT JOIN on the final JOIN, instead of INNER JOIN which is:

```<code>LEFT JOIN category c on film_c.category_id = c.category_id && c.name='Sci-Fi'
</code>```

```<code>+----------+-------------+--------------+----------------------------+
| actor_id | first_name  | last_name    | total_combined_film_length |
+----------+-------------+--------------+----------------------------+
|      200 | THORA       | TEMPLE       |                       2568 |
|      199 | JULIA       | FAWCETT      |                       1555 |
|      198 | MARY        | KEITEL       |                       4962 |
|      197 | REESE       | WEST         |                       3897 |
|      196 | BELA        | WALKEN       |                       3198 |
|      195 | JAYNE       | SILVERSTONE  |                       3217 |
|      194 | MERYL       | ALLEN        |                       2729 |
</code>```

Thank you, anything helps. Really just curious why the values get all messed up!

答:
There are several approaches to take on problems like yours.  This may be the easiest:

```<code>SELECT  a.actor_id, a.first_name, a.last_name,
        COALESCE(
          ( SELECT SUM(f.length)
            FROM  film_actor AS fa    ON a.actor_id = fa.actor_id
            JOIN  film allfilms AS f  ON fa.film_id = f.film_id
            JOIN  film_category AS fc ON f.film_id = fc.film_id
            JOIN  category c          ON fc.category_id = c.category_id
            WHERE  c.name='Sci-Fi'
          )
        ) AS 'total_combined_film_length'
    FROM  actor a
    ORDER BY  a.actor_id DESC;
</code>```

Notes:

You want all actors, correct?

COALESCE is one way to turn NULL into 0.

Tips on efficiency in many-to-many mapping tables:  http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table

Note that the GROUP BY is unnecessary in this formulation.  (And this speeds up the query.)

If you also wanted COUNT(*) AS number_of_films, I would recommend a different formulation, probably involving a "derived" table.

Body:
So I am attempting a query selection that SUM's all minutes from an actor's role in 'Sci-Fi' films.
I get the correct values when I do INNER JOIN, but it does not display the NULL values, then when I do LEFT JOIN I get completely different values that are much higher than expected.
Here is the query selection

SELECT a.actor_id, a.first_name, a.last_name, SUM(allfilms.length)
    AS 'total_combined_film_length'
FROM actor a
LEFT JOIN film_actor film_a ON a.actor_id = film_a.actor_id
LEFT JOIN film allfilms ON film_a.film_id = allfilms.film_id
LEFT JOIN film_category film_c ON allfilms.film_id = film_c.film_id
INNER JOIN category c on film_c.category_id = c.category_id && c.name='Sci-Fi'
GROUP BY a.actor_id
ORDER BY (a.actor_id) DESC;

The result gives me:

+----------+-------------+--------------+----------------------------+
| actor_id | first_name  | last_name    | total_combined_film_length |
+----------+-------------+--------------+----------------------------+
|      200 | THORA       | TEMPLE       |                        287 |
|      198 | MARY        | KEITEL       |                        314 |
|      197 | REESE       | WEST         |                        190 |
|      196 | BELA        | WALKEN       |                         59 |
|      195 | JAYNE       | SILVERSTONE  |                        263 |
|      193 | BURT        | TEMPLE       |                        113 |

When in fact I would like the following entries in there as well:

|      199 | JOHN        | SMITH       |                           0 |
|      194 | RODGER      | FED         |                           0 |

Here is what it looks like when I do LEFT JOIN on the final JOIN, instead of INNER JOIN which is:

LEFT JOIN category c on film_c.category_id = c.category_id && c.name='Sci-Fi'

+----------+-------------+--------------+----------------------------+
| actor_id | first_name  | last_name    | total_combined_film_length |
+----------+-------------+--------------+----------------------------+
|      200 | THORA       | TEMPLE       |                       2568 |
|      199 | JULIA       | FAWCETT      |                       1555 |
|      198 | MARY        | KEITEL       |                       4962 |
|      197 | REESE       | WEST         |                       3897 |
|      196 | BELA        | WALKEN       |                       3198 |
|      195 | JAYNE       | SILVERSTONE  |                       3217 |
|      194 | MERYL       | ALLEN        |                       2729 |

Thank you, anything helps. Really just curious why the values get all messed up!

Body:
There are several approaches to take on problems like yours.  This may be the easiest:

SELECT  a.actor_id, a.first_name, a.last_name,
        COALESCE(
          ( SELECT SUM(f.length)
            FROM  film_actor AS fa    ON a.actor_id = fa.actor_id
            JOIN  film allfilms AS f  ON fa.film_id = f.film_id
            JOIN  film_category AS fc ON f.film_id = fc.film_id
            JOIN  category c          ON fc.category_id = c.category_id
            WHERE  c.name='Sci-Fi'
          )
        ) AS 'total_combined_film_length'
    FROM  actor a
    ORDER BY  a.actor_id DESC;

Notes:

You want all actors, correct?

COALESCE is one way to turn NULL into 0.

Tips on efficiency in many-to-many mapping tables:  http://mysql.rjweb.org/doc.php/index_cookbook_mysql#many_to_many_mapping_table

Note that the GROUP BY is unnecessary in this formulation.  (And this speeds up the query.)

If you also wanted COUNT(*) AS number_of_films, I would recommend a different formulation, probably involving a "derived" table.


问:
Execute two different method simultaneously with different time intervals c#
i am trying to achieve two different methods to start execution at the same time with different time intervals. method1() to be executed every 5 minutes and method2() to be executed every 10 minutes. i am using console application to achieve this.

```<code>    public static Int64 counter = 0;
    static void Main(string[] args)
    {
        bool tryAgain = true;
        while (tryAgain)
        {
            try
            {
                Thread thread1 = new Thread(new ThreadStart(TimerMethod1));
                Thread thread2 = new Thread(new ThreadStart(TimerMethod2));

                thread1.Start();
                thread2.Start();
            }
            catch(Exception ex)
            {
                Thread thread1 = new Thread(new ThreadStart(TimerMethod1));
                Thread thread2 = new Thread(new ThreadStart(TimerMethod2));

                thread1.Start();
                thread2.Start();

                Console.WriteLine("Error ==>" + ex.ToString());
            }
        }
    }
    public static void method1(object sender, System.Timers.ElapsedEventArgs e)
    {
        Console.WriteLine("method1 --" + System.DateTime.Now.ToString() + "=====>" + counter.ToString());
        counter++;
    }
    public static void method2(object sender, ElapsedEventArgs e)
    {
        Console.WriteLine("method2 --" + System.DateTime.Now.ToString());
    }

    public static void TimerMethod1()
    {
        System.Timers.Timer t = new System.Timers.Timer(TimeSpan.FromMinutes(5).TotalMilliseconds); //execute every 5 minutes
        t.AutoReset = true;
        t.Elapsed += new System.Timers.ElapsedEventHandler(method1);
        t.Start();
    }
    public static void TimerMethod2()
    {
        System.Timers.Timer t = new System.Timers.Timer(TimeSpan.FromMinutes(10).TotalMilliseconds); //execute every 10 minutes
        t.AutoReset = true;
        t.Elapsed += new System.Timers.ElapsedEventHandler(method2);
        t.Start();
    }
</code>```

i am using two different timers to manage each method. this puts execution into loop without following timer. counter is just to check number of occurrence for particular method.

note: i just want to start execution of both methods at same time. both should work independently and not depend on each other once started.

答:
Unless I've misunderstood the requirement for dedicated threads, you can do this using Task to allow for asynchronous operation. A single timer can be used with the Elapsed event dispatching tasks allocated to run your methods. A simple bool can be "toggled" to determine if Method2() is called or not on each five minute iteration.

```<code>class Program
{
    static bool runMethod2;

    static void Main(string[] args)
    {
        runMethod2 = true;
        Timer masterTimer = new Timer()
        {
            // Interval of 5 minutes in ms
            Interval = 5 * 60 * 1000
        };
        masterTimer.Elapsed += EventManager;
        masterTimer.Start();

        while (true) { }

    }

    private static void EventManager(object sender, ElapsedEventArgs e)
    {
        runMethod2 = !runMethod2;
        Task.Run(() => Method1());
        if (runMethod2) Task.Run(() => Method2());
    }

    static void Method1()
    {

    }

    static void Method2()
    {

    }
}
</code>```

Body:
i am trying to achieve two different methods to start execution at the same time with different time intervals. method1() to be executed every 5 minutes and method2() to be executed every 10 minutes. i am using console application to achieve this.

    public static Int64 counter = 0;
    static void Main(string[] args)
    {
        bool tryAgain = true;
        while (tryAgain)
        {
            try
            {
                Thread thread1 = new Thread(new ThreadStart(TimerMethod1));
                Thread thread2 = new Thread(new ThreadStart(TimerMethod2));

                thread1.Start();
                thread2.Start();
            }
            catch(Exception ex)
            {
                Thread thread1 = new Thread(new ThreadStart(TimerMethod1));
                Thread thread2 = new Thread(new ThreadStart(TimerMethod2));

                thread1.Start();
                thread2.Start();

                Console.WriteLine("Error ==>" + ex.ToString());
            }
        }
    }
    public static void method1(object sender, System.Timers.ElapsedEventArgs e)
    {
        Console.WriteLine("method1 --" + System.DateTime.Now.ToString() + "=====>" + counter.ToString());
        counter++;
    }
    public static void method2(object sender, ElapsedEventArgs e)
    {
        Console.WriteLine("method2 --" + System.DateTime.Now.ToString());
    }

    public static void TimerMethod1()
    {
        System.Timers.Timer t = new System.Timers.Timer(TimeSpan.FromMinutes(5).TotalMilliseconds); //execute every 5 minutes
        t.AutoReset = true;
        t.Elapsed += new System.Timers.ElapsedEventHandler(method1);
        t.Start();
    }
    public static void TimerMethod2()
    {
        System.Timers.Timer t = new System.Timers.Timer(TimeSpan.FromMinutes(10).TotalMilliseconds); //execute every 10 minutes
        t.AutoReset = true;
        t.Elapsed += new System.Timers.ElapsedEventHandler(method2);
        t.Start();
    }

i am using two different timers to manage each method. this puts execution into loop without following timer. counter is just to check number of occurrence for particular method.

note: i just want to start execution of both methods at same time. both should work independently and not depend on each other once started.

Body:
Unless I've misunderstood the requirement for dedicated threads, you can do this using Task to allow for asynchronous operation. A single timer can be used with the Elapsed event dispatching tasks allocated to run your methods. A simple bool can be "toggled" to determine if Method2() is called or not on each five minute iteration.

class Program
{
    static bool runMethod2;

    static void Main(string[] args)
    {
        runMethod2 = true;
        Timer masterTimer = new Timer()
        {
            // Interval of 5 minutes in ms
            Interval = 5 * 60 * 1000
        };
        masterTimer.Elapsed += EventManager;
        masterTimer.Start();

        while (true) { }

    }

    private static void EventManager(object sender, ElapsedEventArgs e)
    {
        runMethod2 = !runMethod2;
        Task.Run(() => Method1());
        if (runMethod2) Task.Run(() => Method2());
    }

    static void Method1()
    {

    }

    static void Method2()
    {

    }
}