Hi,
I have installed emoncms on a shared server but i have problems with my first signup attempt: i get a red box and Chrome show this message:
Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://www.myemon.altervista.org/user/register.json
My web address is http://www.myemon.altervista.org, i have unzipped the emoncms-master file on the root but there is not a folder called user and neither a file called register.json.
Someone had similar problems installing emoncms on a shared server? Is it because the server need to enable mod_rewrite?
Thanks for read this! :)
Emilio
Re: signup problems on shared Linux hosting
One thing to check is th permissions on all the directories. I found many of mine were root. When I changed it to the user account it seems to have resolved this issue. Not sure why but that is what I did.
Good luck.
Re: signup problems on shared Linux hosting
Thanks Nathanmonk, i did as you said but i keep having same error message.
The files (from unzipped master.zip) are into my shared public_html folder on the remote server.
I dont have any emoncms folder. Maybe this is wrong?
My error message from Chrome is:
Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://www.myemon.altervista.org/user/login.json
This path was probably generated by script and do not exist on my site because i dont have any user folder on my root.
(sorry for my bad english).
Emilio
Re: signup problems on shared Linux hosting
I'm guessing you followed the steps on http://emoncms.org/site/docs/sharedlinuxhosting ?
Re: signup problems on shared Linux hosting
Yes, php and mysql are on and about mod_rewrite i have put this line on .htacces: RewriteBase /
and the error message now is not present on Chrome, but nothing more happens, i'm not able to register myself,
the page show an empty red box as usual.
At start i get this message (always present):
notice: putenv() has been disabled for security reasons in /membri/myemon/locale.php
Thanks for your help :)
Emilio
Re: signup problems on shared Linux hosting
The files (from unzipped master.zip) are into my shared public_html folder on the remote server.
I dont have any emoncms folder. Maybe this is wrong?
Sounds like you unzipped the files directly into your public_html folder rather than into a folder of their own. (Which then gets renamed to emoncms) or, you didn't rename the folder they were unzipped in, to emoncms.
Re: signup problems on shared Linux hosting
Yes i unzipped the files directly into public_html, so i dont know what i need to rename. I need to put them into a folder and call it emoncms? I will do that, thanks!
Emilio
Re: signup problems on shared Linux hosting
Now the files and directories are into the folder emoncms and this one is on the public_html folder.
Trying to register first time the only change was that error 500 became error 404:
Failed to load resource: the server responded with a status of 404 (Not Found) http://www.myemon.altervista.org/emoncms/user/register.json
It seems to me that some locations are generated in a wrong why by the scripts route.php, but i'm not sure about this.
I need to set something in .htacces in order to have mod_rewrite working fine?
Thanks again
Emilio
Re: signup problems on shared Linux hosting
Hi Emilio,
After getting your emoncms directory issue fixed, did you copy defaultsettings.php to settings/php and make the necessary edits?
You *did* create a mysql database, right?
Bill
Re: signup problems on shared Linux hosting
Yes, I did create the database (lol), i can see it using PhpMyAdmin and i can see the 8 tables creates inside. If i query the 'users' table i can see my registration with API keys for read and write and other data about my account registration. So the db connection worked fine.
I have noticed that the mysql db engine is myISAM and InnoDB engine is not activated by default on my server, is it important?
About the settings.php file: i see something weird on the last row:
// Log4PHP configuration
$log4php_configPath = '/etc/emoncms/emoncms_log4j.xml';
i know i need to change this but no idea how ^^
thanks
Emilio
Re: signup problems on shared Linux hosting
Wow... i did this change inside the .htacces file inserting this row:
RewriteBase /emoncms
and now ALL IS WORKING! :-)
YAYYYYYYY
emilio
Re: signup problems on shared Linux hosting
Hy all,
I have the same pb, I tried Emilio's solution, but it did not work for me...
Too bad
Let me know if you find something else...
Tony


--- title: "500 Internal Server Error" layout: "default" ---
We're sorry, but a server error has occurred while processing your request on our end. If this continues to occur, please use our contact form or contact us directly at {{ site.ode_email }}.
Return to Homepage


{% extends "base.html" %} {% block content %}
Run Amber and Gromacs simulations on your Xbow cluster.
BETA


ENEMY AT THE GATES Written (with Alain Godard) and Directed by Jean-Jacques Annaud
UA North R 131 min
World War II is back with a vengeance. On May 25th Pearl Harbor will be bombed at a theater near you. In August, Captain Corelli's Mandolin will strike up its tune. And Santa Fe screens this week feature two takes on that war from a Russian perspective.
Incomparably the better of the two is Elem Klimov's 1985 classic Come and See, one of the most harrowing war movies ever made. Set in Byelorussia in 1943, it experiences the horrors of that war through the eyes of young Florya (Aleksei Kravchenko) who joins the partisan resistance against the Nazi invasion. The Germans conducted a scorched earth campaign in Byelorussia, destroying 638 villages and massacring their inhabitants. "Inferior races carry the microbe of communism," sneers a German officer. "Your nation has no right to exist."
What begins as almost a game for Florya, searching on a beach for guns with a friend, evolves into horrors so great that the boy suffers a trauma-induced progeria, aging decades in a few months. "I ended up filming a lightened-up version of the truth," Klimov has said. "Had I included everything I knew, even I could not have watched it." There are also scenes of lyrical beauty. A remarkable montage at the end of newsreel footage run in reverse suggests that if we could only go back far enough maybe we could discover what went wrong and set it right.
Jean-Jacques Annaud (Seven Years in Tibet) has reconstructed the battle of Stalingrad, winnowing it down to a couple of ace snipers (Jude Law for the Russians, Ed Harris for the Boche) duking it out as if their respective armies had agreed to let the war's outcome be decided by their duel. Law plays Vassili, a sort of stepped-down Sgt. York, a country boy with a sharpshooter's eye. He's built up, sports hero-style, by Danilov (Joseph Fiennes), the army political officer who writes pamphlets about him. Both of them fall in love with fellow-fighter Tanya (Rachel Weisz), and there is never a moment when we care about any of this. The production, with its ruined city and wall-to-wall dead bodies, is impressive, but Annaud lacks the breadth of visual language that made Spielberg's vision of Armageddon so devastating. The characters and the story never engage the imagination. Annaud shows a weakness for the truly bad scene which casts a pall of suspicion over his better moments.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


# -*- coding: utf-8 -*-
__author__ = """Chris Tabor (dxdstudio@gmail.com)"""
if __name__ == '__main__':
from os import getcwd
from os import sys
sys.path.append(getcwd())
from MOAL.helpers.display import Section
from MOAL.helpers.display import prnt
from random import randrange as rr
from pprint import pprint as ppr
from fractions import Fraction
from inspect import getsource
from math import log
# Theory references and exercises from
# http://www.math.brown.edu/~jhs/frint.html
# and http://www.math.utah.edu/~carlson/notes/python.pdf
[docs]def rand(max_nums):
for n in range(1, max_nums):
yield rr(1, max_nums)
raise StopIteration
[docs]def triangle(max_nums):
for n in range(1, max_nums):
yield (n * (n + 1)) // 2
raise StopIteration
[docs]def square(max_nums):
for n in range(1, max_nums):
yield n * n
raise StopIteration
[docs]def cube(max_nums):
for n in range(1, max_nums):
yield n * n * n
raise StopIteration
[docs]def exp(max_nums):
for n in range(1, max_nums):
yield n ** n
raise StopIteration
[docs]def exp_custom(max_nums, power):
for n in range(1, max_nums):
yield n ** power
raise StopIteration
[docs]def lg(max_nums):
for n in range(1, max_nums):
yield log(n)
raise StopIteration
[docs]def lg_custom(max_nums, base):
if base < 2:
base = 2
for n in range(1, max_nums):
yield log(n, base)
raise StopIteration
[docs]def odd(max_nums):
for n in range(1, max_nums):
if n % 3 == 0:
yield n
raise StopIteration
[docs]def even(max_nums):
for n in range(1, max_nums):
if n % 2 == 0:
yield n
raise StopIteration
[docs]def factor(num):
div = 2
factors = []
# Num is continually divided until it's LTE 1.
while num > 1:
# If no remainder, it's a factor, so append it.
if num % div == 0:
factors.append(div)
# Update n be the next small number
num //= div
else:
div += 1
yield factors
raise StopIteration
[docs]def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
[docs]def factorials(max_nums):
# Recursive generator for each item.
for n in range(1, max_nums):
yield factorial(n)
[docs]def factor_factorials(max_nums):
for n in range(1, max_nums):
res = factorial(n)
for f in factor(res):
yield ppr({'factors': f, 'num': n, 'factorial': res})
# http://en.wikipedia.org/wiki/
# Least_common_multiple#Reduction_by_the_greatest_common_divisor
return abs(a * b) // gcd(a, b)
[docs]def fibo(max_nums):
count = 0
prev, current = 1, 1
while count < max_nums:
result = current + prev
yield result
current, prev = result, current
count += 1
raise StopIteration
[docs]def gcd(a, b):
if a == 0:
return b
return gcd(abs(b % a), a)
# Misc. exercises
[docs]def exercise_1_2(max_nums):
# http://www.math.brown.edu/~jhs/frint.html
for n in range(1, max_nums):
if n % 3 == 0:
summed = sum([_ for _ in range(n)])
yield n, summed, summed // n
raise StopIteration
[docs]def exercise_2_8(max_nums):
# http://www.math.brown.edu/~jhs/frint.html
for n in range(1, max_nums):
yield Fraction(1, n) + Fraction(1, n + 2)
raise StopIteration
# Testing lattice theoretic identities
# http://en.wikipedia.org/wiki/Least_common_multiple#Lattice-theoretic
[docs]def commutative_lcm_laws(a, b):
assert lcm(a, b) == lcm(b, a)
assert gcd(a, b) == gcd(b, a)
[docs]def associative_lcm_laws(a, b, c):
assert lcm(a, lcm(b, c)) == lcm(lcm(a, b), c)
assert gcd(a, gcd(b, c)) == gcd(gcd(a, b), c)
[docs]def idempotent_lcm_laws(a, b):
assert lcm(a, a) == a
assert gcd(a, a) == a
[docs]def absorption_lcm_laws(a, b):
assert lcm(a, gcd(a, b)) == a
assert gcd(a, lcm(a, b)) == a
# Helper functions
[docs]def test_number(*args):
func, args = args[0], args[1:]
try:
prnt(func.func_name, [_ for _ in func(*args)])
except TypeError:
prnt(func.func_name, func(*args))
if __name__ == '__main__':
with Section('Number theory'):
test_number(odd, 10)
test_number(even, 10)
test_number(exp, 10)
[test_number(exp_custom, 10, n) for n in range(10)]
test_number(lg, 10)
[test_number(lg_custom, 10, n) for n in range(10)]
test_number(square, 10)
test_number(fibo, 10)
test_number(cube, 10)
test_number(rand, 10)
test_number(triangle, 10)
[test_number(gcd, rr(999, 9999), rr(999, 9999)) for _ in range(4)]
funcs = [
lambda x: x ** 2,
lambda x: x * 2,
lambda x: x // 2,
lambda x: x * x - x // x + x
]
[prnt(
'Series of series with: {}'.format(getsource(f)),
[map(f, (n for n in range(1, _)))
for _ in fibo(8)]) for f in funcs]
[prnt(
'Factor {}'.format(n),
[f for f in factor(rr(100, 9999))][0]) for n in range(4)]
prnt('Factorial', [f for f in factorials(10)])
[f for f in factor_factorials(10)]
# Misc. exercises
test_number(exercise_1_2, 20)
test_number(exercise_2_8, 20)
# Should raise no errors
commutative_lcm_laws(10, 320)
associative_lcm_laws(10, 320, 999)
idempotent_lcm_laws(10, 320)
absorption_lcm_laws(10, 320)


|
www.CelebrityMorgue.com
P.T. Barnum's prize elephant Jumbo was killed September 15, 1885, crossing railroad tracks in St. Thomas, Ontario. The collision derailed the train, and 150 people were required to haul the elephant's body up an embankment. Jumbo's death was a great loss to Barnum's show, but the loss was somewhat mitigated when both the taxidermied hide of the beast and its skeleton were exhibited together. Vital statistics: height 11.5 feet, weight 6.5 tons, age 24
|


Here's what's new in Release 1.1 (9 October 2017):
Bug fixes
Fixed an issue with datetime64 values. Previously, in the
display()
function's table view, datetime64 values in Pandas appeared as Unix timestamps. These date values are now properly displayed (
#279
).
When importing PixieDust, it will no longer override an existing function named "display." In which case, users can still call PixieDust's display function using
pixiedust.display()
. If no pre-existing functions named "display" are found, then PixieDust will work as usual, allowing users to call display directly. (
#455
).
New behavior when calling the display function on an unsupported entity. Instead of telling users that "No PixieDust visualization was found" when attempting to call
display()
on a data object that's not a PySpark or Pandas DataFrame, PixieDust now falls back to the IPython display method (
#343
).
Mapbox user layers are fixed. Previously, PixieDust would break this feature because of changes to Python's geojson package ( #453 ).
Map visualizations no longer aggregate latitude-longitude data. Previously, PixieDust expected an aggregation function in this situation, making it difficult to simply explore points on a map ( #410 ).
Better handling of invalid API keys for map visualizations. Previously, if a maps API key was missing or invalid, PixieDust would display a black map. Now, it surfaces an error message to the user ( #367 ).
Enhancements
An alpha release of PixieApps web publishing is now live. Introduced in release 1.0.8 , PixieApps allow developers to run interactive UI elements, directly from notebook cells. Now with PixieApps' web publishing feature, the same interactive UI elements developed to run in-notebook can now be published as a web application at the click of a button. See the announcement blog for more details ( #450 ).
Mapbox is now the default option for visualizing geospatial data on a map. Previously, PixieDust would choose Google maps by default, which requires additional configuration ( #451 ).


With Bootstrap, a navigation bar can extend or collapse, depending on the screen size.
A standard navigation bar is created with the .navbar
class, followed by a responsive collapsing
class: .navbar-expand-xl|lg|md|sm
(stacks the navbar vertically on extra large, large, medium or
small screens).
To add links inside the navbar, use a

element with class="navbar-nav"
. The
add

elements with a .nav-item
class followed by an
element with a .nav-link
class:


Uber lose London licence over "pattern of failures"
by James CoxUber has lost its licence to operate private hire vehicles in London after authorities found that drivers who had faked their identity on the Uber app were responsible for more than 14,000 trips.
Uber's licence will not be renewed at the end of a two-month probationary extension.
Transport for London found that the company had failed to deal with issues around checks on drivers, insurance and safety.
In a statement on Monday, TfL said it had identified a "pattern of failures" by Uber, including breaches that placed passengers' safety at risk.
In a statement, TfL said: “Despite addressing some of these issues, TfL does not have confidence that similar issues will not reoccur in the future, which has led it to conclude that the company is not fit and proper at this time.”
Uber pledged to challenge the "extraordinary and wrong" decision.
The company has a period of 21 days to lodge an appeal and it can continue to operate in that time.


[
Up Level
|
Project home
|
Index
|
Class hierarchy
]
Index
BayesianDP
Method of
ImaiJainChing
BellmanIterations
Element of enumeration
DesignParameters
Burnin
Element of enumeration
DesignParameters
c
Field of
Rsystem
Candidate
Method of
ImaiJainChing
Close
Element of enumeration
DesignParameters
Csigma
Field of
ImaiJainChing
curth
Field of
Rsystem
Design
Field of
ImaiJainChing
DesignParameters
Element of enumeration
DesignParameters
DPmeth
Field of
ImaiJainChing
DPSystem
Class
dV
Field of
Rsystem
DynamicRsystem
Class
DynamicRsystem
Constructor of
DynamicRsystem
EV
Field of
EVSystem
EVSystem
Constructor of
EVSystem
EVSystem
Class
h
Field of
ImaiJainChing
ImaiJainChing
Constructor of
ImaiJainChing
ImaiJainChing
Class
Iterations
Element of enumeration
DesignParameters
K
Method of
ImaiJainChing
Keep
Element of enumeration
DesignParameters
lbv
Field of
Rsystem
meth
Field of
Rsystem
Ncuts
Field of
Rsystem
Report
Method of
ImaiJainChing
ReservationValues
Constructor of
ReservationValues
ReservationValues
Class
Rsystem
Constructor of
Rsystem
Rsystem
Class
ru
Field of
Rsystem
Run
Method of
ReservationValues
Run
Method of
RVGSolve
Run
Method of
SaSGSolve
Run
Method of
RVEdU
Run
Method of
SolveAsSystem
RValSys
Field of
RVGSolve
RVEdU
Constructor of
RVEdU
RVGSolve
Constructor of
RVGSolve
RVGSolve
Class
RVSolve
Method of
Rsystem
RVSolve
Global function
SaSGSolve
Class
SaSGSolve
Constructor of
SaSGSolve
Solve
Method of
RVGSolve
Solve
Method of
ReservationValues
Solve
Method of
SolveAsSystem
SolveAsSystem
Constructor of
SolveAsSystem
SolveAsSystem
Class
systask
Field of
EVSystem
system
Field of
SolveAsSystem
SystemAlgorithms
Element of enumeration
SystemAlgorithms
SystemSolutionMethod
Field of
SolveAsSystem
USEBROYDEN
Element of enumeration
SystemAlgorithms
USENEWTONRAPHSON
Element of enumeration
SystemAlgorithms
Vhist
Field of
ImaiJainChing
VI
Field of
SolveAsSystem
Volume
Field of
RVGSolve
Xhist
Field of
ImaiJainChing
zstar
Field of
Rsystem


|
SX126x-Arduino
2.0.1
|
#include "LoRaMacHelper.h"
#include "region/RegionCommon.h"
#include "system/utilities.h"
#include "mac/LoRaMacTest.h"
Functions | |
| void | lmh_setDevEui (uint8_t userDevEui[]) |
| void | lmh_setAppEui (uint8_t *userAppEui) |
| Set Application IEEE EUI. More... | |
| void | lmh_setAppKey (uint8_t *userAppKey) |
| Set Application Key AES encryption/decryption cipher application key. More... | |
| void | lmh_setNwkSKey (uint8_t *userNwkSKey) |
| Set Network Session Key AES encryption/decryption cipher network session key. More... | |
| void | lmh_setAppSKey (uint8_t *userAppSKey) |
| Set Application Session Key AES encryption/decryption cipher application session key. More... | |
| void | lmh_setDevAddr (uint32_t userDevAddr) |
| Set Device address on the network (big endian) More... | |
| void | lmh_setSingleChannelGateway (uint8_t userSingleChannel, int8_t userDatarate) |
| Disable channel hoping for connnection to single channel gateways Check the file CHANNELS.MD to find out which channel corresponds to which frequency in a specific region Check the file Region.h to find out which datarate corresponds to which SF and bandwidth in a specific region. More... | |
| bool | lmh_setSubBandChannels (uint8_t subBand) |
| Set custom channel mask. More... | |
| static bool | compliance_test_tx (void) |
| static void | OnComplianceTestTxNextPacketTimerEvent (void) |
| Function executed on TxNextPacket Timeout event. More... | |
| static void | McpsConfirm (McpsConfirm_t *mcpsConfirm) |
| MCPS-Confirm event function. More... | |
| static void | McpsIndication (McpsIndication_t *mcpsIndication) |
| MCPS-Indication event function. More... | |
| static void | MlmeConfirm (MlmeConfirm_t *mlmeConfirm) |
| MLME-Confirm event function. More... | |
| lmh_error_status | lmh_init (lmh_callback_t *callbacks, lmh_param_t lora_param, bool otaa, eDeviceClass nodeClass, LoRaMacRegion_t user_region) |
| Lora Initialisation. More... | |
| void | lmh_datarate_set (uint8_t data_rate, uint8_t enable_adr) |
| Configure data rate. More... | |
| void | lmh_tx_power_set (uint8_t tx_power) |
| Configure tx power. More... | |
| void | lmh_join (void) |
| Join a Lora Network in class A. More... | |
| lmh_join_status | lmh_join_status_get (void) |
| Check whether the Device is joined to the network. More... | |
| lmh_error_status | lmh_send (lmh_app_data_t *app_data, lmh_confirm is_tx_confirmed) |
| Send data. More... | |
| lmh_error_status | lmh_send_blocking (lmh_app_data_t *app_data, lmh_confirm is_tx_confirmed, uint32_t time_out) |
| Send data and wait for RX2 window closed or timeout occurs. More... | |
| lmh_error_status | lmh_class_request (DeviceClass_t newClass) |
| change Lora Class More... | |
| void | lmh_class_get (DeviceClass_t *currentClass) |
| get the current Lora Class More... | |
| uint32_t | lmh_getDevAddr (void) |
| Returns the Device address set by the LoRaWan server after OTAA join success. More... | |
| bool | lmh_setAS923Version (uint8_t version) |
| Adjust frequency band to AS923-1, AS923-2, AS923-3. More... | |
Variables | |
| uint16_t | ChannelsMask [6] |
| uint16_t | ChannelsDefaultMask [6] |
| uint16_t | ChannelsMaskRemaining [6] |
| size_t | ch_mask_size = sizeof(ChannelsMask) |
| LoRaMacRegion_t | region |
| bool | _otaa = false |
| bool | _dutyCycleEnabled = false |
| bool | lmh_mac_is_busy = false |
| static uint8_t | DevEui [] = LORAWAN_DEVICE_EUI |
| static uint8_t | AppEui [] = LORAWAN_APPLICATION_EUI |
| static uint8_t | AppKey [] = LORAWAN_APPLICATION_KEY |
| static MlmeReqJoin_t | JoinParameters |
| static uint8_t | NwkSKey [] = LORAWAN_NWKSKEY |
| static uint8_t | AppSKey [] = LORAWAN_APPSKEY |
| static uint32_t | DevAddr = LORAWAN_DEVICE_ADDRESS |
| bool | singleChannelGateway = false |
| uint8_t | singleChannelSelected = 0 |
| int8_t | singleChannelDatarate = DR_3 |
| static LoRaMacPrimitives_t | LoRaMacPrimitives |
| static LoRaMacCallback_t | LoRaMacCallbacks |
| static MibRequestConfirm_t | mibReq |
| static lmh_param_t | m_param |
| static lmh_callback_t * | m_callbacks |
| static lmh_compliance_test_t | m_compliance_test |
| static bool | m_adr_enable_init |
| static TimerEvent_t | ComplianceTestTxNextPacketTimer |
| void lmh_setDevEui | ( | uint8_t | userDevEui[] | ) |
| void lmh_setAppEui | ( | uint8_t * | userAppEui | ) |
Set Application IEEE EUI.
| userAppEui | Application IEEE EUI as uint8_t[] * |
| void lmh_setAppKey | ( | uint8_t * | userAppKey | ) |
Set Application Key AES encryption/decryption cipher application key.
| userAppKey | Application Key as uint8_t[] * |
| void lmh_setNwkSKey | ( | uint8_t * | userNwkSKey | ) |
Set Network Session Key AES encryption/decryption cipher network session key.
| userNwkSKey | Network Session Key as uint8_t[] * |
| void lmh_setAppSKey | ( | uint8_t * | userAppSKey | ) |
Set Application Session Key AES encryption/decryption cipher application session key.
| userAppSKey | Application Session Key as uint8_t[] * |
| void lmh_setDevAddr | ( | uint32_t | userDevAddr | ) |
Set Device address on the network (big endian)
| userDevAddr | Device address as uint8_t[] * |
| void lmh_setSingleChannelGateway | ( | uint8_t | userSingleChannel, |
| int8_t | userDatarate | ||
| ) |
Disable channel hoping for connnection to single channel gateways Check the file CHANNELS.MD to find out which channel corresponds to which frequency in a specific region Check the file Region.h to find out which datarate corresponds to which SF and bandwidth in a specific region.
| userSingleChannel | Channel to be used |
| userDatarate | Datarate to be used |
| bool lmh_setSubBandChannels | ( | uint8_t | subBand | ) |
Set custom channel mask.
| subBand | Sub channel number 1 to 8 |
|
static |
|
static |
Function executed on TxNextPacket Timeout event.
|
static |
MCPS-Confirm event function.
| mcpsConfirm | Pointer to the confirm structure, containing confirm attributes. |
|
static |
MCPS-Indication event function.
| mcpsIndication | Pointer to the indication structure, containing indication attributes. |
|
static |
MLME-Confirm event function.
| mlmeConfirm | Pointer to the confirm structure, containing confirm attributes. |
| lmh_error_status lmh_init | ( | lmh_callback_t * | callbacks, |
| lmh_param_t | lora_param, | ||
| bool | otaa, | ||
| eDeviceClass | nodeClass = CLASS_A , |
||
| LoRaMacRegion_t | region = LORAMAC_REGION_EU868 |
||
| ) |
Lora Initialisation.
| callbacks | Pointer to structure containing the callback functions |
| lora_param | Pointer to structure containing the parameters |
| otaa | Choose OTAA (true) or ABP (false) activation |
| nodeClass | Choose node class CLASS_A, CLASS_B or CLASS_C, default to CLASS_A |
| region | Choose LoRaWAN region to set correct region parameters, default to EU868 |
| error | status |
| void lmh_datarate_set | ( | uint8_t | data_rate, |
| uint8_t | enable_adr | ||
| ) |
Configure data rate.
| data_rate | data rate |
| enable_adr | enable adaptative data rate |
| void lmh_tx_power_set | ( | uint8_t | tx_power | ) |
Configure tx power.
| tx_power | tx power |
| void lmh_join | ( | void | ) |
Join a Lora Network in class A.
| lmh_join_status lmh_join_status_get | ( | void | ) |
Check whether the Device is joined to the network.
| returns | LORAMACHELPER_SET if joined |
| lmh_error_status lmh_send | ( | lmh_app_data_t * | app_data, |
| lmh_confirm | is_txconfirmed | ||
| ) |
Send data.
| app_data | Pointer to data structure to be sent |
| is_txconfirmed | do we need confirmation? |
| error | status |
| lmh_error_status lmh_send_blocking | ( | lmh_app_data_t * | app_data, |
| lmh_confirm | is_tx_confirmed, | ||
| uint32_t | time_out | ||
| ) |
Send data and wait for RX2 window closed or timeout occurs.
| app_data | Pointer to data structure to be sent |
| is_txconfirmed | do we need confirmation? |
| time_out | time to wait in milliseconds |
| error | status |
| lmh_error_status lmh_class_request | ( | DeviceClass_t | newClass | ) |
change Lora Class
| newClass | DeviceClass_t NewClass |
| LoraErrorStatus |
| void lmh_class_get | ( | DeviceClass_t * | currentClass | ) |
get the current Lora Class
| currentClass | DeviceClass_t NewClass |
| uint32_t lmh_getDevAddr | ( | void | ) |
Returns the Device address set by the LoRaWan server after OTAA join success.
| returns | Device Address |
| bool lmh_setAS923Version | ( | uint8_t | version | ) |
Adjust frequency band to AS923-1, AS923-2, AS923-3.
| version | 1 => use default frequencies (AS923-1) 2 => adjust frequencies by substracting 1.8MHz (AS923-2) 3 => adjust frequencies by substracting 6.6MHz (AS923-3) 4 => adjust frequencies by substracting 5.9MHz (AS923-4), only lower 8 channels supported |
| true | if success |
| uint16_t ChannelsMask[6] |
| uint16_t ChannelsDefaultMask[6] |
| uint16_t ChannelsMaskRemaining[6] |
| size_t ch_mask_size = sizeof(ChannelsMask) |
| LoRaMacRegion_t region |
| bool _otaa = false |
| bool _dutyCycleEnabled = false |
| bool lmh_mac_is_busy = false |
|
static |
End-device identifier
|
static |
Application identifier
|
static |
Application key
|
static |
|
static |
Network session key
|
static |
Application session key
|
static |
End-device address
| bool singleChannelGateway = false |
Flag if connection is to a single channel gateway
| uint8_t singleChannelSelected = 0 |
Channel to be used to communicate with a single channel gateway
| int8_t singleChannelDatarate = DR_3 |
Datarate to be used to communicate with a single channel gateway
|
static |
LoRaMAC events variable
|
static |
LoRaMAC callback variable
|
static |
LoRaMAC MIB-RequestConfirm variable
|
static |
|
static |
|
static |
LoRaWAN compliance tests data
|
static |
|
static |


There's a lot happening around you! Our mission is to provide what's happening near you!
Get Started ➜


OOPS! ERROR 404.
The page you're looking for doesn't exist. Please check your address and try again.
Back To Home


Methods
api($http) → {Object}
Service that retrieves todos from backend API if available.
Parameters:
| Name | Type | Description |
|---|---|---|
$http |
Object | Global service for server request creation. |
- Source:
Returns:
- Type
- Object
config($routeProvider)
The main TodoMVC app module.
Parameters:
| Name | Type | Description |
|---|---|---|
$routeProvider |
Object | Global routes provider service. |
localStorage($g) → {Object}
Service that retrieves todos from local storage if available.
Parameters:
| Name | Type | Description |
|---|---|---|
$g |
Object |
- Source:
Returns:
- Type
- Object
TodoCtrl($scope, $routeParams, $filter, store)
The main controller for the app. The controller:
- retrieves and persists the model via the todoStorage service
- exposes the model to the template and provides event handlers
Parameters:
| Name | Type | Description |
|---|---|---|
$scope |
Object | Context of created controller. |
$routeParams |
Object | Parameters of opened application route. |
$filter |
Object | Global information converter. |
store |
Object | Collection of existed todos. |
- Source:
todoEscape() → {function}
Directive that executes an expression when the element it is applied to gets
an `escape` keydown event.
- Source:
Returns:
- Type
- function
todoFocus() → {function}
Directive that places focus on the element it is applied to when the
expression it binds to evaluates to true.
- Source:
Returns:
- Type
- function
todoStorage($http, $injector) → {Object}
Service that persists and retrieves todos from localStorage or a backend API
if available. They both follow the same API, returning promises for all changes to the model.
Parameters:
| Name | Type | Description |
|---|---|---|
$http |
Object | Global service for server request creation. |
$injector |
Object | Global injector for services getting. |
- Source:
Returns:
- Type
- Object


Weather Master
Please enter your city and province
search
{{weather.city}}, {{weather.country}}
{{weather.date}}
{{weather.text}}
{{weather.temp}}
°{{weather.tempUnit}}
Pressure: {{weather.pressure}} {{weather.presUnit}}
Humidity: {{weather.humidity}}%
Wind: {{weather.wind}} {{weather.windUnit}}
{{child.day}}
{{child.high}}
{{child.low}}


As I explored the data for my Data Science Immersive Capstone project, I realized with much disappointment that the data was simply not as I interesting as I had hoped it might be. While there were some predictions and inferences I would be able to make, the data did not lead to much in the way of interesting data engineering nor modeling. I decided to add in data from outside sources. For my Capstone, the first idea I had was WEATHER data!
Off to Google I go. I thought I would easily turn up a BeautifulSoup script to scrape monthly weather data. No luck. So time to write my own.
As I set up the script, I ran into a number of issues.
First, pulling up Weather Underground historical data gave me empty tables. While that was frustrating, I kept digging. (I dig; sometimes that's good, sometimes it isn't ...) I soon realized that if I went to the Spanish language site, I could get the tables. I was happy to go with that and translate a little, my daughter suggested replacing the "espanol" in the URL with "english". I replied that it would never work. I was proven wrong. So I could reach data at an alternative URL : English Weather Underground.
With access to the correct pages, I was faced with a choice. Visit the few pages I needed (12 months and 6 cities = 72 pages) and copy/paste the tables. But that would not be satisfying.
Hello BeautifulSoup. I still was incredulous that I couldn't turn up a script. Perhaps it is out there, but, since I'm working on developing my skills, I chose to take the time to write my own script.
Second issue. At the time of this writing, the tables are incorrectly formatted. The category "wind" is sub-labeled 'Max', 'Avg', 'Max':
From looking at other data sources, I believe that the first two columns are 'Max' and 'Avg', but I have no idea what the third columns is. Gust?
So, to scrape the data!
First, import the regular libraries.
import requests import pandas as pd from bs4 import BeautifulSoup from datetime import datetime
Then onto the logic. I needed 8 cities of data for 2 different years:
city_codes = { 'atl' : "KATL", 'bos' : "KBOS", 'chi' : "KORD", 'la' : "KCQT", 'phl' : "KPHL", 'sf' : "KSFO", 'dc' : "KDCA", 'nyc' : "KNYC" } start_year = 2017 end_year = 2018
First I start with creating a function that takes a start year, an end year, and a "city code" (as used on Weather underground) and ceclare the order of columns on WU. While this could be generalized, we noted above that the column names aren't correct, so it is better to double-check.
def read_write_wx(start_year, end_year, wx_code): weather_cols = ["date", 'temp_max', 'temp_avg', 'temp_min', 'dew_max', 'dew_avg', 'dew_min', 'hum_max', 'hum_avg', 'hum_min', 'sea_max', 'sea_avg', 'sea_min', 'vis_max', 'vis_avg', 'vis_min', 'wind_avg', 'wind_unk', 'wind_max', 'prec', 'events' ]
As I dug into the html, I saw that there is little use of class and id tags, so there's not much chance of generalizing the script. Instead, I find my way down to the correct table, and then find the data, and grab it using the order of the columns as specified.
While I had hoped to simply iterate through each column of each row, some data was missing. I generalized most of the columns, but I also added a little data cleaning for the "event" columns.
list_wx = [] for yr in range(start_year, end_year+1): for mn in range(1, 13): # Open wunderground.com url url = "http://english.wunderground.com/history/airport/" + wx_code + "/" + str(yr)+ "/" + str(mn) + "/1/MonthlyHistory.html?&reqdb.zip=&reqdb.magic=&reqdb.wmo=" res = requests.get(url) res.status_code soup = BeautifulSoup(res.content, 'lxml') hist_table = soup.find_all('table', { 'id' : 'obsTable'}) for h in hist_table: body = h.find_all('tbody') for b in body[1:]: row_list = b.find_all('tr') for row in row_list: col_list = row.find_all('td') wx = dict() day = col_list[0].find('a').text wx["date"] = datetime(yr, mn, int(day)) for i in range(1,20): val = 0 elem = col_list[i].find('span') if elem: val = elem.text wx[weather_cols[i]] = val events = "None" elem = col_list[20] if elem: events = elem.text.strip() events = events.replace('\t','') events = events.replace('\n','') if len(events) == 0: events = "None" wx['events'] = events list_wx.append(wx)
To close out the function, I casted my list of dictionaries (each element of the list corresponds to a day of weather data) into a Pandas DataFrame.
To run the whole thing, we call the function, looping through the cities in order to create a separate CSV file for each:
for city, wx_code in city_codes.items(): df = read_write_wx(start_year, end_year, wx_code) df.to_csv('../data/' + city + '/weather.csv', index=False)
And I now have two years of weather data for each of the 8 cities on my list.


| 47 | (A) | that w.. ..... .... .. .... ... ... noye wroghte |
| 47 | (C) | Thay callede hym nero by name . þat hem noye wrougħt |
| 47 | (D) | þei callid hym Nero by name þat hem noy wrogħt |
| (E) | ---- no text ---- | |
| (Ex) | ---- no text ---- | |
| 47 | (L) | Caled nero by name þat hym to noye wroȝt |
| 42 | (P) | Calde Nero be name þat þaim noye wroght |
| 47 | (U) | That cald him Nero by name / that hem a noye wrougħt |
| (V) | ---- no text ---- |


Silverback Welcome to the Silverback Projects!
- Silverback A Status and Incident Communication Tool.
- Sloth Liteweight HA Monitoring & Alerting System.
- Reindeer A Service to Mock and Inspect HTTP Events.
- Krypton Open Source Workflow Automation.
- Pyumetric A Python Package to unify time series data sources and third party monitoring services.
- Pyvalitron Python Inputs Validation Library.


I am a college student currently working towards my GIS certificate. I've been attending Northeastern Illinois University for almost 4 years and I've also gotten my Bachelor of Arts Degree in Geography there previously. I'm a persistent person with a passion in art, nature, and learning and like to work under pressure while meeting assignment deadlines. I was born in Evanston, IL and raised in Skokie, IL. My dream job is to either be a GIS analyst or an environmental scientist.
Greeting and assisting customers at checkout and ringing up items while processing payments.
Was responsible for slicing, pricing, and wrapping deli items; operating meat slicers, ovens, and fryers; and complying to sanitation standards.
Was responsible for checking receipts to confirm gift eligibility; answering customers' questions; and giving gifts to customers.
GPA: 3.62
GPA: 2.66
GPA: 3.00


{% extends 'layout.html' %} {% block body %}
SPD is a Speed Detection Application, which is used for effective overspeeding detection by a simple integration in the accelerometer of each car.
The accelerometer connected to the car wirelessly send data to our database where an intense analysis is done on the collected data and accordingly a warning or an offence committed message is being sent to the user on his registered E- mail address and his registered mobile number. The user data is collected at the time of registering the car in his name. We also offer graphical statistics to map out the users driving speeds.


Allows finding the ideal material for different thermochemical
applications. Please note that this is based on thermodynamics
of redox reactions. Not all materials shown here are necessarily
stable or can be synthesized. This tool allows a pre-selection
of materials. Please refer to the
documentation
for more detailed information.


'The Masked Singer' Reveals Another Celebrity Masked Singer: And The Flower Is... (Video)
Seven Season 2 contestants remain
by Jennifer Maas(Warning: This post contains spoilers for Wednesday’s episode of “The Masked Singer.”)
Fox’s “The Masked Singer” revealed the identity of another Season 2 celebrity contestant during tonight’s episode of the smash-hit singing competition: The Flower.
On Wednesday, four out of the eight remaining second-season contestants competed, including The Flower, The Leopard, The Flamingo and The Rottweiler.
At the end of the episode, panelists Jenny McCarthy, Nicole Scherzinger, Ken Jeong and Robin Thicke and the studio audience, along with guest panelist Joel McHale, chose the “weakest” contestant, which ended up being The Flower. She was unmasked and revealed to be none other than Patti LaBelle.
Also Read:
Watch the reveal video above.
Now we’re waiting to find out the identities of the seven remaining contestants, including The Leopard, The Flamingo, The Rottweiler, The Butterfly, Thingamajig, The Fox and The Tree.
“Collectively, all of the Season 2 undercover celebrities have amassed 69 Emmy Award nominations, 42 Grammy Award nominations, 22 Broadway shows, three New York Times best-sellers and two have been named Time magazine’s Most Influential People,” according to Fox.
“The Masked Singer” is off next Wednesday, but fans can look forward to a double helping of the competition the week of Dec. 9, when a holiday-themed semifinals episode will air on Dec. 11, one night after the show airs an episode in a special 8 p.m. Tuesday time slot.
“The Masked Singer” airs Wednesdays at 8/7c on Fox.


UK Conservatives gain over Labour: Independent poll
LONDON (Reuters) - Prime Minister Boris Johnson’s Conservative Party has gained versus the opposition Labour Party over the past month, a poll published by the Independent newspaper showed on Sunday.
The opinion poll put the Conservatives on 37%, up from 31% a month earlier, while the opposition Labour Party saw their support rise to 29% from 26%. Support for the third-placed Liberal Democrats dropped to 16% from 20%.
Polling company BMG surveyed 1,504 British adults between Nov. 5 and Nov. 8.


Solomon Messing https://SolomonMg.github.io
[firstname.lastname] AT gmail DOT com
https://github.com/SolomonMg
—————————————– ——————————–
\
Facebook, Core Data Science Team Menlo Park, CA (Principal) Research Scientist 2012 - Present ————————————– ——————
-
Partnered with PMs & executives to lead data science for high-visibility external facing research on misinformation, elections, health and well-being.
-
Led R&D, application, launch of largest ever data sharing effort (reflecting $>$1 exabyte) to facilitate study of misinformation—global view- and interaction data on external content on Facebook since 2017. Groundwork w/ engineering teams on analysis platform. Implemented and open-sourced privacy-oriented URL-santization framework.
-
Evaluation of privacy solutions: reidentification risk metrics; implications for precise, global analytics; privacy-preserving analytics/ML (FLEX/Chorus + Spark) on secure data infrastructure; deep neural networks (PyTorch/differentially private SGD); external vendor solutions.
-
Complex experimentation frameworks: estimating heterogenous treatment effects in experiments while limiting false-positives (R); adaptive experimentation for online decision-making systems (contextual multi-armed bandits in Python).
-
Internal consultation/feedback on experimental design; simulation and data driven power analysis (R).
-
Civic engagement work: feature modeling for political campaigns using large scale, high dimensional network data (Python/Giraph); strong positive impacts on revenue, CTRs, client feedback. Groundwork for Town Hall constituent-communication features. Top tier publications with national media attention.
-
Managed & mentored junior staff, taught DataCamp course on statistics and large datasets, instructed joint Facebook-Udacity Exploratory Data Analysis course.
Pew Research Center, Data Labs Washington, DC Managing Director (Founding) 2015 - 2018 ———————————— —————-
-
Established and led data science research group focused on machine learning for text (NLP) and images (computer vision), complex experimental designs, R&D, data science consulting for other teams. Worked with senior leadership to craft vision, get stakeholder buy-in, and execute on hiring, infrastructure, research and publication.
-
Hired and managed team of 6 data scientists, researchers, engineers. Cross functional work to create data science career track; recruit, evaluate, & “dotted-line” manage data science staff embedded in other teams.
-
Supervised development of R & Python-oriented data science infrastructure with wide adoption: Linux-based AWS cloud servers; custom Django dashboards/labeling/harmonization tools; large scale scraping/API query data collection efforts; PostGreSQL, with S3, BigTable, Hive for larger data sets; ML infrastructure with SKLearn, PyTorch, Keras neural network architectures; Jupyter and RStudio Server web interfaces for analysis; GitHub version control.
-
Led publication of collaborative data science-oriented projects with national media attention. See http://www.pewresearch.org/topics/data-labs/.
-
Served as public spokesperson for data science research, including interviews with national media and television outlets, presentations to government officials.
-
Developed protocols for data science at Pew: machine learning standards, security, data management.
Morning Consult Washington, DC Advisor 2013 - Present ——————— ——————
-
Informal role as consultant for cofounders on overall strategy, innovation in polling methodology.
-
Formal advisory role as consultant for executive team and CTO on data science, social media for research and intelligence arms of the company.
Stanford University, Social Science Data and Software (SSDS) Stanford, CA Consultant 2011 - 2013 —————————————————————— —————
-
Guided Stanford researchers through experimental and observational study design, including web experiments, scraping, text analysis, network analysis, statistical modeling, visualization in R.
-
Led workshops introducing R, data visualization, scraping & analysis of text data.
Science Applications International Washington, DC Media Analytics Team Lead 2005 - 2011 —————————————- —————-
-
Early-stage word embeddings using Latent Semantic Analysis (LSA/LSI) with substantial NLP post processing and ML for classification, entity resolution, sentiment.
-
Qualitative research on misinformation, propaganda in Indonesia, Middle East using primary language internet sources, with readership across the U.S. diplomacy and intelligence communities. More than 50 reports, citations, follow-up research requests from government officials including Undersecretary Hughes, Congressman Markey, and then-Senator Clinton.
-
Multi-language quantitative research: sentiment, attribution of responsibility, economic framing; GUI; database; visualizations. Human-coder training, calibration/reliability, report production.
Law-on-line, Inc. Tucson, AZ Information Technology Associate/Consultant 1996 - 2005 (non-continuous) ———————————————– ——————————–
- Developed and helped bring to market multiple security software products for applications related to digital signature technology. Java, PGP key infrastructure, web dev.
Stanford University Stanford, CA Ph.D. Communication (2013), M.S. Statistics (2012) 2008 - 2013 —————————————————— —————
University of California, San Diego La Jolla, CA Masters, School of Global Policy and Strategy (Int’l MBA-curriculum) 2003 - 2005 ———————————————————————— —————
University of California, Santa Barbara Santa Barbara, CA
Bachelor of Arts with Honors in Political Science and Global Studies, Japanese minor
—————————————————————————————- ——————-
1
Tokyo, Japan *Study abroad* ---------------- --------------
: The Impression of Influence: Legislator Communication, Representation, and Democratic Accountability Grimmer, Westwood & Messing (contributing author). 2014. Princeton University Press.\ - Reviewed in: Journal of Politics, Congress & The Presidency, Political Communication, Political Science Quarterly.\ - Subject of roundtable at Western Political Science Association, 2015.\ - Media coverage: Vox (Mischiefs of Faction).
<!-- -->
- : [*Projecting Confidence: How the Probabilistic Horse Race Confuses
- and Demobilizes the
- Public*](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3117054).
- Westwood, Messing & Lelkes. Journal of Politics, forthcoming.\
- - Cited by [FiveThirthyEight’s Politics
- Podcast](https://fivethirtyeight.com/features/politics-podcast-whats-so-wrong-with-nancy-pelosi/)
- as influential in decision to change forecast presentation.\
- - Media coverage: [Washington
- Post](https://www.washingtonpost.com/news/politics/wp/2018/02/06/clintons-achilles-heel-in-2016-may-have-been-overconfidence/?utm_term=.b71fb84da00f),
- [New York
- Magazine](http://nymag.com/daily/intelligencer/2018/02/americans-dont-understand-election-probabilities.html),
- [Political
- Wire](https://politicalwire.com/2018/02/06/election-forecasts-lower-voter-turnout/).
-
“Bots in the Twittersphere: An estimated two-thirds of tweeted links to popular websites are posted by automated accounts – not human beings” Wojcik, Messing, Smith, Rainie. Pew Research Center, 2018.\
- Cited by California State Senator Robert Hertzberg in passage of SB 1001, making it illegal to create bots that misrepresent identity or otherwise deceive people in California.\
- Media coverage: Wired, Vox, USA Today, Observer, NiemanLab, TechCrunch, VentureBeat, FastCompany.
-
“Very liberal or conservative legislators most likely to share news on Facebook” Messing. Pew Research Center, 2018.\
-
“Estimating Heterogeneous Treatment Effects and the Effects of Heterogeneous Treatments with Ensemble Methods” Grimmer, Messing, and Westwood. Political Analysis, 2017.\
- Replication materials.\
- Software implementation (under development):
-
“Sharing the News in a Polarized Congress” Messing, van Kessel, Hughes. Pew Research Center, 2017.\
- Media coverage: Politico, Washington Post, Axios, Quartz.
-
“Partisan Conflict and Congressional Outreach” Messing, van Kessel, Hughes, Judd, Blum. Pew Research Center, 2017.\
- Media coverage: Washington Post, Mother Jones.
-
“Exposure to ideologically diverse news and opinion on Facebook” Bakshy, Messing, & Adamic. Science, 2015.\
- Review by David Lazer.\
- Supplementary materials.\
- Replication materials.\
- Media coverage: New York Times, Washington Post, Ars Technica, BBC, CBS News.
-
“Bias in the Flesh: Skin Complexion and Stereotype Consistency in Political Campaigns” Messing, Plaut & Jabon. Public Opinion Quarterly, 2015.\
- Replication materials.\
- Media coverage: CBS News, Washington Post.
-
“Quantifying Social Media’s Political Space: Estimating Ideology from Publicly Revealed Preferences on Facebook” Bond & Messing. American Political Science Review, 2015.
-
“Selective Exposure in the Age of Social Media: Endorsements Trump Partisan Source Affiliation when Selecting News Online” Messing & Westwood. Communication Research, 2013.
-
“Role of Diffusion Weighted Imaging in the Diagnosis of Pediatric Abdominal Tumors” Gawande, Gonzalez, Messing, Khurana, & Daldrup-Link. Pediatric Radiology, 2013.
-
“How Words and Money Cultivate a Personal Vote: The Effect of Legislator Credit Claiming on Constituent Credit Allocation” with Grimmer, Messing & Westwood. American Political Science Review, 2012.
-
“Intravenous Ferumoxytol Allows Noninvasive MR Imaging of Stem Cell Transplants” with Khurana, Gawande, Lin, Lee, Messing, Castaneda, Derugin, Pisani, Lue, & Heike Daldrup-Link. Radiology, 2012.
-
“Do Attitudes about Immigration Predict Willingness to Admit Individual Immigrants? A Cross-National Test of the Person-Positivity Bias” Iyengar, Jackman, Messing, Valentino, Aalberg, Duch, Hahn, Soroka, Harell, & Kobayashi. Public Opinion Quarterly, 2012.
-
“Differentiation of the Normal Thymus from Anterior Mediastinal Lymphoma on Pediatric PET-CTs” with Rakhee Gawande, Aman Khurana, Messing, Dong Zhang, Rosalinda Castaneda, Robert Goldsby, Randal Hawkins, Messing & Heike Daldrup-Link. Radiology, 2011.
-
“Who is a ‘Deserving’ Immigrant? An Experimental Study of Norwegian Attitudes” Aalberg, Iyengar, & Messing. Scandinavian Political Studies, 2011.
<!-- -->
- : University of Virginia Data Science Institute, Differential Privacy
- & Corporate Data, Charlottesville, VA, September 6, 2019.
-
University of Amsterdam International Conference on Computational Social Science, Amsterdam, NL, July 18, 2019.
-
Catalist, Election forecasting, Washington, DC, April 10, 2018.
-
Social Media and Political Participation Global Conference, Shang Hai, March 11, 2018.
-
Congressional Management Foundation, Facebook and the U.S. Congress, Washington, DC, January 17, 2018.
-
USC, Media Exposure and Opinion Formation workshop, Los Angeles, November 9, 2017.
-
Social Media and Political Participation Global Conference, New York, November 3, 2017.
-
World Bank, Big Data in Government, Washington, May 16, 2017.
-
Data and Society, New York, March 31, 2017.
-
Social Media and Political Participation Global Conference, Abu Dhabi, February 9, 2017.
-
Analyst Institute Social Networks Roundtable, March 9, 2016.
-
GAO CG Forum on 21st Century Data and Analytics, January 28, 2016.
-
Duke Network Analysis Center (DNAC), October 20, 2015.
-
Hewlett Foundation, News Funders Conference, June 19, 2015.
-
Spatial Computational Social Science at Stanford, Oct 20, 2014.
-
UCLA Institute for Politics in Math, April 22, 2014.
-
Stanford Political Science American Politics Workshop, April 22, 2013.
-
Stanford Computational Social Science, Analyzing large data sets, September 20, 2012.
-
Stanford Political Science Methods Workshop, May 2, 2012.
<!-- -->
- 2010
-
$60,000 Google Research Award (with Sean Westwood, supervised by Dan McFarland & Jeremy Bailenson) “Harnessing the social graph: Social cues and reliability in content selection and evaluation”
- 2010
-
$1,000 A-REP Research Grant (with Sean Westwood), “The impact of social news ratings on media consumption heuristics and agenda setting”
- 2008
-
Department of Communication Fellowship
- 2007
-
Annual Achievement Award for Excellence in Science and Technology - Technical Collaboration, Science Applications International
- 2007
-
Selected for Future Leaders program, Science Applications International
- 2004–2005
-
Dean’s Fellow, University of California, San Diego IR/PS
- 2001
-
Phi Beta Kappa, University of California, Santa Barbara
- 2000
-
Golden Key, University of California, Santa Barbara
<!-- -->
HetEffects
-
with Justin Grimmer. R package utilizing ensemble machine learning methods to estimate high-dimensional causal effects that vary by treatment-group combination. Development version at https://github.com/SolomonMg/HetSL. See Estimating Heterogeneous Treatment Effects and the Effects of Heterogeneous Treatments with Ensemble Methods.
ImageMetrics
-
R package to facilitate the analysis of image data, designed to facilitate analysis described in “Bias in the flesh” (see above). See https://github.com/SolomonMg/ImageMetrics.
NetCluster, triads, NetData
-
with Mike Nowak, Sean Westwood & Dan McFarland. R packages to determine node-level triad type membership for the 16 types of triads that occur in a directed network, facilitate network clustering and evaluation of cluster configurations, and provide example data. Examples in “Social network analysis labs in R.”
<!-- -->
- R Statistical Programming Language
-
Data visualization, conventional statistical analysis/econometrics, Bayesian statistics, text-as-data, image, GIS, and network data, including authoring multiple software packages.
- Python
-
Data analysis (Pandas, NumPy, SciPy), Machine Learning (SciKit Learn, Gensim), parsing data from the web, computer vision, text-as-data, deep-learning (text data), data management.
- SQL
-
Experience utilizing Hive (HQL) with petabyte scale data sets, PostGreSQL, database design with MySQL, SQLite.
- Java
-
Undergraduate & natural language processing courses taken; some instrustry coding experience.
- Web Dev
-
Working knowledge of JavaScript, PHP, JSON, RegEx, HTTP, Linux shell scripts, C-sharp/.NET.
<!-- -->
- : Reviewer, Science
-
Reviewer, American Political Science Review
-
Reviewer, American Journal of Political Science
-
Reviewer, Political Analysis
-
Reviewer, Public Opinion Quarterly
-
Reviewer, Political Behavior
-
Assistant Editor, Reviewer, Political Communication
-
Founding Editor, Reviewer, Journal of International Policy Solutions
-
Guest Editor, Reviewer, Journal of Public and International Affairs
<!-- -->
- Indonesian/Malay Bahasa
-
2 years professional experience as Indonesian analyst/linguist; 2 years intensive Indonesian graduate study; Certified 3/2 Written/Spoken on the Interagency Language Roundtable (ILR) scale used by the U.S. Foreign Service.
- Japanese
-
3 years undergraduate language study, 1 year study abroad in Tokyo, Japan.
- Arabic
-
Digital courses taken; introductory-level translation experience.


Police dismantle euro forging gang
by PA/LusaSpanish Police have arrested six people in an operation to dismantle an illegal printing works in Huelva (Andalusia) that produced counterfeit notes that were distributed in Spain and Portugal.
In a joint operation with Europol (the body that coordinates the European police forces), a clandestine printing plant was “dismantled” in Huelva and “the distribution” of 250,000 counterfeit euros in Spain and Portugal was avoided.
More than 8,200 euros in counterfeit notes with a face value of 10, 20 and 50 euros, two pistols, three printers, three computers, large quantities of paper, metallic materials, ink cartridges, cutting instruments and other materials for counterfeiting money were also seized.
The police explained that the investigation began in March of this year, when counterfeit notes were detected, and it was concluded that the criminal organisation operated from the province of Huelva, which borders the Algarve, where the notes were apparently distributed in small shops and bars.
The police then discovered that the counterfeiters not only distributed them in southern Spain, but also in Portugal.
“Once the printer had been dismantled and the person responsible for the counterfeit had been arrested, the investigators located and arrested the five distributors of the counterfeit notes.


MANAGEMENT AND DISPOSITION OF NATURAL RESOURCES
Section 2. The legislature shall vest in one or more executive boards or commissions powers for the management of natural resources owned or controlled by the State, and such powers of disposition thereof as may be provided by law; but land set aside for public use, other than for a reserve for conservation purposes, need not be placed under the jurisdiction of such a board or commission.
The mandatory provisions of this section shall not apply to the natural resources owned by or under the control of a political subdivision or a department or agency thereof. [Ren and am Const Con 1978 and election Nov7, 1978]
Cross References
Executive board, see §26-15.
Attorney General Opinions
Not applicable to agriculture department. Att. Gen. Op. 64-14.
Not applicable to Hawaiian home lands department. Att. Gen. Op. 64-15.


Voting system for Roctar' Science League platform.
Clear UI and intuitive UX
Using pure HTML5, CSS and JS
Implementing API endpoints and using AJAX
JavaScript Developer
Initial commit.
Backend Developer
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eos id officiis hic tenetur.
HTML/CSS Designer
Used to make music, now it's just noise. Likes design and eating chocolate.
Lead Project Consultant
Has too many programming jobs but it's always there when you need it.


1. Introduction and Goals
The objective of this project that we will develop further is to create a decentralized chat application based on SOLID specifications. Our application can resemble any other more popular and commercially successful in the field of instant messaging, except that ours, as we said in the beginning uses a decentralized architecture to store data, providing a more remarkable security than the others. Our application aims to help users (two or more) to communicate with each other, sharing all kinds of information without this information being stored on any external server, providing a completely private and therefore secure communication. To do so, users must have a POD of SOLID to store their data. As essential characteristics of our application, we will look for them to be the most similar to those of the most popular, either:
-
Share photos, videos and other files
-
Multi-person chat groups
-
Notifications
-
Etc.
1.1. Requirements Overview
A brief description of the functional requirements of our application is that it consists of a decentralized chat application based on SOLID, where users using the application must have a SOLID POD, which will allow these users to store their data, to share their files, images, videos, notifications, and so on. A more rigorous specification can be found at the following link, which describes the high level requirements of the application. Requirements.
As for the general motivation, the aim of the development of the following project is that in the chat application there is no central database that could violate the information shared by users. The purpose is to seek the security provided by the privacy provided by the decentralization of the application, so that all users who use it feel safe and secure that the data they share is not compromised.
Here are two cases of uses in which our application shares a text file: the first one being between two users and the other case, a user sharing a file with several. Case One (1-1) Case Two (1-)*
1.2. Quality Goals
Main characteristics of our application.
| Nr | Quality | Motivation |
|---|---|---|
1 |
Security |
The chat should not have weak points that violate the data and files of users, as well as provide visibility only to those users involved in the chat. |
2 |
Usability |
It must be a simple application in use for all types of user, that is intuitive and that entails a very easy learning curve. |
3 |
Availability |
The application must be ready to run at any time, and as long as there is a connection, the user should be able to use all the features offered by the chat. |
4 |
Efficiency |
Messages should be sent as fluidly and quickly as possible, without any loss of information. |
5 |
Scalability |
The application is functioning correctly as the number of users grows. |
6 |
Decentralized |
Main objective in accordance with functional requirements, we will use SOLID requirements for this purpose to protect user data. |
1.3. Stakeholders
Table with the people involved in the project
| Stakeholder | Description | Goal/Boundaries |
|---|---|---|
Chat Users |
Users of the developed application. |
Be able to chat in real time with a person or group of people, with ease of use and comfort. |
Inrupt |
Company interested in the application and that has proposed us the challenge to develop it. |
Obtain a decentralized and secure application using SOLID specifications built by students. |
José Emilio Labra Gayo |
Coordinator of the Software Architecture subject. |
Person who participates in the evaluation of the application and who is also interested in its correct development fulfilling the quality attributes. |
Team |
Development team |
Develop an application that will work and archive the minimum requirements set out in the beginning. |
2. Architecture Constraints
2.1. Introduction
There are certain limitations that may restrict our application, which are different in type and scope.
2.2. Constraints
| Constraint | Background and / or motivation |
|---|---|
Programming language |
JavaScript will be used as the programming language to build the application as it is the most advisable option for web based. |
SOLID Specifications |
El chat debe ser descentralizado utilizando la tecnología SOLID. |
Decentralized architecture |
It must be a chat where the user’s data is separated from the application that uses it. |
Compatible and stand-alone application |
This application must be compatible with any operating system and major web browsers (Chrome, Firefox, Opera, Edge …). |
| Constraint | Background and / or motivation |
|---|---|
Team |
The team will be formed by Aida Maria Gonzalez, Elena Puga, David Canle, Alberto Nuñez, German Iglesias and Jaime Fernández. |
Timetable |
The project will be carried out during the Software Architecture course, which will be approximately four months. |
Project cost |
No budget is available for the project, which reduces our resources for the development of the project. |
Version Control |
A GitHub repository (dechat_es4a) will be used to keep the project development up to date and available to all participants anytime, anywhere. |
| Constraint | Background and / or motivation |
|---|---|
Arc42 Template for documentation |
Use of arc42 templates written on AsciiDoc. |
Language |
We have decided to use English for the development of the project in order to seek greater international reach. |
3. System Scope and Context
The scope of our project is to create an app that can communicate two people without their data having to go through an external server, that is, this app uses data that is in our private server (POD).
For all this we are using Solid that is a tool that allows users to mark their data, which allows them to have their own server. They can also specify which data to communicate with whom and which apps can access which parts of their data do not need that your data go through an intermediary that makes money with private data
The stakeholders who can use this app will be anyone who has added as a friend in solid to the other person, so that they can access their POD with the data of this person.
In this application we will use an interface that allows you to see the name of the other person with whom you are chatting and the messages sent and received, we will have a box to write the message to send. These messages will be stored in the POD so that conversation the messages are completely isolated and only people who chat among them will be able to access them.
The communication interface is that of any chat of this style, so that stakeholders will be known and therefore more intuitive. On the other hand our interface will be made with a library of JavaScript with the aforementioned, an area to write the text to send, another to see the conversation we have with the other person and finally a small part above in which we will see the name of the other person.
-
Diagram:
3.1. Business Context
The communicated parties are the stakeholders that can be anyone who wants to have a conversation with this app. There are also the PODs of each of the users that will be used to save the data.
The interface will receive the messages of the two users and will save the conversation in the PODs of the two users. On the other hand it will show information of both users. The communication with Solid and the POD will be received in the application with the use of specific JavaScript libraries. The RDFs returned by the PODs will be used by the application to access the data of both users.
Being an app as simple as a chat, users should not have any problem with the use of this application.
-
Table:
| Users | The PODs | |
|---|---|---|
Name |
The both see each other’s name in the application’s interface |
The application calls the two PODs and you are given back the username |
Message Received |
Receive the other’s message and it seen in the part where the conversation shows our interface |
The application communicates the message that is in the other POD of the one that sent the message |
Message Sent |
Write the message in the box and press the button to send it, you can see it just like the once received |
The message is stored in the POD of the sender, and the application receives the link from the node that stores the message and communicates it to the other |
3.2. Technical Context
The implementation of the application has been made in angular and has a user interface that allows you to create a chat with another person who has been added to the POD.
After start a conversation, the messages of the app are stored in a private folder within the POD of each person, stored in order and using the necessary turtle system to store the information of each message.
When you reconnect, read the messages stored in the PODs again to restore the conversation.
In addition, profile images of the users are collected as well as the name of these to be displayed in the application.
The data processing is done through a rdflib library to deal with the storage of data in rdf and different modules are used that provides angular to work with solid.
4. Solution Strategy
The key of this project is the decentralization of data.
For working with data decentralization we will be using Solid, a project by Prof. Tim Berners-Lee, as is one of the prerequisites of this project, has and intuitive form of use and works very well with different programming languages allowing us to have had more alternatives about this choice the first weeks of our planning.
Angular was the framework chosen to program with as it counts with different libraries, as RDFLib or solid-auth-client for example, that makes working with solid a lot easier and way more secure; it is also a high demanded and used framework and it gives us the opportunity to learn more about it and about TypeScript. The last reason is Angular will make our code more valuable for the community as there are not so many applications for Solid+Angular for now.
We are going to use WebStorm for coding and editing our documentation as it is an IDE that provides both functionalities ,most of us are used to it and has many funcionalities and plugins for Angular. Also, it is compatible with Github, the version control manager we are going o use, as is the one used in our university and one of the leader platforms to share free source code.
Regarding design we will be using the MVC pattern that Angular already provides. Solid provides by itself a modular design form by different pods containing the client data, and we want to keep the decentralization of that data as clear as possible so by structuring the project with this pattern we will have the exact responsibilities of each layer separated and the way they communicate to each other will be very clear and visual.
To achieve all this we will be following the agile methodology SCRUM with some modifications. As all of us will have the software architect role so there won’t be a SCRUM master and everybody will have the same level and responsibility. We will document and follow this methodology by the different funcionalities of Github as the Dashboard, milestones, issues,etc.
Finally for testing we will be using Cucumber for the acceptance testing and Karma and Jasmine for the login testing.
5. Building Block View [TODO]
5.1. Whitebox Overall System
The decentralized chat app, deChat, is based on SOLID, which is a project led by Tim Berners-Lee, father of the World Wide Web. Its name stands for "SOcial LInked Data". The main goal of SOLID is to give the user full control over their data and who can access it, to achieve this, the SOLID PODs have been created. These PODs also let users decide where their data is stored, it can be stored in their personal PC or in an onlive server from various SOLID providers. In order to Log in to the deChat app you can use your SOLID POD.
The main elements that make part of the app and will communicate with each other are the following:
| Name | Responsibility |
|---|---|
User |
Users will log in using their POD, from there, they can have conversations and share files with other users |
User POD |
They are used to store the data of his owner, then, any user with granted access can interact with it |
deChat app |
This app allows users to communicate with each other, provides the functionality and views necessary for that matter |
6. Runtime View [TODO]
6.1. Log in
-
The user runs the application:
1.1. Subscenario 1: The user doesnt have a POD, they have to sign up to either Inrupt or Solid Community. (Solid Community recommended since the current version has some bugs with Inrupt's PODs)
1.2. Subscenario 2: The user does already have a POD, but they are not logged in, then they select their provider and enter the credentials.
1.3. Subscenario 3: The user has a POD and is logged in, in this case the user can use the application from the get-go.
6.2. Send messages
In order to send a message the user has to be logged in and have friends added.
-
The user opens the app, logs in, and then they can go to the chat page.
-
The chat page has two main sections, the friends list and the chat box.
2.1. To chat with a friend the user selects a user from the list.
2.2. If there is already a chat selected it will load the previous messages.
-
When a chat is loaded the user can start talking to the selected friend by writing int the text box located in the bottom of the chat box.
-
The user clicks "Send" (this action can also be done by pressing the enter key) and then the message will be writen in the submitter’s POD. Then the other user application can read the messages from the submitter’s POD and display them
7. Deployment View
7.1. Infrastructure Level 1
| Node/Artifact | Description |
|---|---|
index.html |
Html file that contain all information to execute our application in the web browser. |
User Device |
A browser that can run our application. Chrome or Firefox should work. |
Web Hosting Service |
Webpage where the application is deployed. |
Home SOLID Server |
Server created and administrated by the client with his/her own POD. |
Inrupt Provider Web Server |
Free provider of PODs by the commercial entity established by the Solid founding team. |
SOLID Community Provider Web Server |
Free provider of PODs for the Solid community, by the Solid community. |
8. Cross-cutting Concepts
8.1. Domain Model
In th following image, we present you the arquitecture of components we are using in this project.
8.2. Domain Concept
In our application we have three main domain concepts:
-
POD: Place where all client data is store.
-
Client: Stakeholder that uses the chat to send and receive messages.
-
Message: Text or file sent by client with information for other client.
8.3. Architecture and design
We are using the architecture design in Angular. It is composed by modules and components following MVC (Model-View-Controller).
8.4. User Experience
8.4.1. User Interface
Design of the user interface for the app. The user interface is written with Angular 7. We also used Bootstrap templates and the default design from tutorial of SOLID Inrupt website with Angular. We have pages for the login, registration, main page and chat.
8.5. Under-the-hood
9. Design Decisions
The main and actual decisions are further explained at the fourth section of this document, Solution Strategy, but an index of these is:
-
Architecture and design decisions
-
MVC by Angular
-
Modular Desing by Solid
-
-
Programing languages
-
Angular [TypeScript]
-
-
Technologies
-
WebStorm by Jetbrains
-
Github
-
-
Methodologies
-
Scrum
-
-
Testing
-
Cucumber
-
Karma and Jasmine
-
10. Quality Requirements
10.2. Quality Scenarios
-
An user attempts to access the porfile of a friend → the application makes a request to the server to access the porfile’s contents of the friend’s POD, retrieves them, and shows them to the user within 1 second (multimedia content may vary)
-
An user attempts to access the porfile of a person that has explicitly set their profile to private → the application makes a request to the server to access the porfile’s contents of the person’s POD, but due to the lack of permission the access is denied and the requesting user is informed within 1 second
-
An user changes his/her porfile picture → The application request the server storing the POD to edit the contents, and upon obtaining permission he changes the picture. from now on people accessing this porfile will see the updated picture
-
An user wants to start a conversation with a friend → The application makes a request to estabish a line of communication between the current device and the device in which the friend has his app installed within 3 seconds.
-
The application is modified to be integrated with Github (or any website with social interaction for that matter) → the Application now can retrieve information from the linked GitHub account, informing the user with each relevant action (Commits, updates in repostories, requests to participate in projectts, etc). If Application friends link their accounts to the application and they allow that information to be shared in settings, the user will be informed that they share platform.
11. Risks and Technical Debts
-
A clear technical risk is that the libraries used by us while being developed could still give failures in specific cases.
-
Another risk could be that Solid is a project that has recently come out and therefore there is not a large community that explains its use. And this lack of information is also something that must be taken into account.
-
On the other hand, our lack of knowledge about the functioning of Solid can be a risk, since it may take longer than expected to perform the application. Like the ignorance of many of us about the use of the JavaScript programming language or the use of libraries related to Solid.
-
We can also see that the use of RDF as output files that Solid uses is a bit more complex, and not so much that, as it is quite different from the conventional way of storing data that has the relational databases that we are used to use. But this risk is solved because we will use libraries that manage the output files of Solid.
-
Finally, a risk that also exists is that it is the first time that we are going to exercise as software architects. Therefore, we may make mistakes in some design decisions or even find it hard to coordinate.
To reduce some of these risks we are trying to inform ourselves as much as possible both in the use of Solid, as well as the use of libraries that JavaScript uses to make applications with Solid. Many of us are looking for information that we add to the repository wiki. In addition to the meetings we are doing in practice class, we are meeting separately to be more organized and prepared
12. Glossary
| Term | Definition |
|---|---|
Javascript |
the main clent-side programming language of HTML and the Web. It’s the programming language chosen for this project https://en.wikipedia.org/wiki/JavaScript |
HTML |
HTML stands for Hyper Text Markup Language; HTML describes the structure of Web pages using markup |
SOLID |
a web decentralization project that aims to separate user’s data and applications, led by Tim Berners-Lee, the inventor of the World Wide Web. This is the project in which this project is based on. SOLID It stands for Social Linked Data |
POD |
An Acronim for 'Personal Online Data', it refers to the personal decentralized storage used in SOLID aplications. Its stores the data from the user outside of the application, allowing the user to retain control and ownership of personal information. |
REST |
It refers to a software architectural style in web applications in which the full extend of HTTP protocols is used, avoiding abuse of the POST and GET well-known protocols. while HTTP is an application protocol, REST is a set of rules, that when followed, enable you to build a distributed application that has a specific set of desirable constraints. |
MVC architecture |
An architectural pattern that will be used on this application. Commonly used for developing user interfaces that divides an application into three interconnected parts. This is done to separate internal representations of information from the ways information is presented to and accepted from the user. More info: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller https://developer.mozilla.org/en-US/docs/Web/Apps/Fundamentals/Modern_web_app_architecture/MVC_architecture |
Decentralized/Decentralization |
Within the software context, it refers to the lack of a single entity controling the storage, processing power and/or management of a software entity. within the SOLID aquitecture context in particular, it usually refers to the lack of a single entity to manage the storing of the user’s data. This returns the ownership of the user’s data to the user itself. |
About arc42
arc42, the Template for documentation of software and system architecture.
By Dr. Gernot Starke, Dr. Peter Hruschka and contributors.
Template Revision: 7.0 EN (based on asciidoc), January 2017
© We acknowledge that this document uses material from the arc 42 architecture template, http://www.arc42.de. Created by Dr. Peter Hruschka & Dr. Gernot Starke.


This is another article in the group of data structures.
A hash map is a powerful in-memory data structure that allows adding and retrieving data in a constant time. Most modern languages have support for this and usually they include variations and optimizations over it, therefore most of us take this for granted, but this was not always the case, and here I try to explain how this one works. The basic data structure supported by any programming language is the array. An array is a contiguous block of memory set aside to store the same type of data. For example an array of 10 integers, will occupy in a 64 bit machine 80 bytes. An array is quite powerful because you can write and retrieve values from and to the array by using a single operation, which is denoted as O(1) using the Big O notation.
What a hash map solves is a problem where we want to have a set of data indexed instead of by numbers, by an arbitrary type of data, this is known as an associative array because each value in the array is associated with a key instead of a numeric index assigned by the value’s position within the array. But of course the order of the data within the associative array is not given by any position. Conceptually it can be visualized as the following image:
In the left hand side we have a basic array, indexed by the position in memory (and this is the reason why an array starts with index 0), while on the right hand side we have an associative array indexed by an arbitrary key. If we stored any value in the element associated with “alpha” we would be overwriting the element there.
The way to achieve this, first is to create an array with a fixed size that is capable of holding as many elements as we need, and then using a hash function that translates the key into a unique integer value. Once we have an integer value, we can simply calculate the hash key modulo the size of the array to find the location of the element in the array.
Having a unique key and having the same key every time each element requires computing it is a must for the above description to work. What happens after that with the key can change depending on the implementation. Having a large integer module a shorter one (the size of the array) will lead inevitably to what is called collisions. That means two or more keys will end up pointing to the same element in the array. To solve the collision, one way is to generate a single linked list that starts in the element of the array indicated by the hash key. Another option is to start calculating the (key + i) modulo (array size). Here i will mean how many iterations have to happen for us to find an empty spot in the table. In my opinion the first one is a cleaner one and the one I have used for years.
If we wanted to calculate a simple hash value for the string in the input box below, we can use the following code
Enter text: Hash:
Javascript already provides associative arrays built, therefore there is no need to create a hash map, however for example purposes we can implement a simple one following the guidelines above with the following code, instead of writing pseudocode I prefer giving fully working javascript that can be run in this same browser or adapted to your preferred language.
Please let me know below your comments, and what other programming challenges you would like to get explained here.


|
IAIK PKCS#11 Wrapper Demo version 1.2.17 |
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Class Summary | |
| AlgorithmIDAdapter | This class is an adapter to enables an application to use a different implementation than the standard implementation with the IAIK-JCE. |
| ConcurrentHash | This demo program connects to two different modules and calculates hash values with both of them. |
| DecryptPKCS7 | This demo shows how to use a PKCS#11 token to decrypt a PKCS#7 encrypted object. |
| DefaultInitArgs | This demo program tries to call initialize with some arguments. |
| DeleteObject | This demo program allows to delete certain objects on a certain token. |
| DeriveKeyDemo | This demo program shows how to derive a DES3 key. |
| Digest | This demo program uses a PKCS#11 module to calculate a hash of a given file. |
| DownloadData | This demo program can be used to download data to the card. |
| DownloadPrivateKey | This demo program can be used to personalize a card. |
| DSASignAndVerify | Creates and verifies a signature on a token. |
| DumpObjects | This demo program lists information about a library, the available slots, the available tokens and the objects on them. |
| EncryptDecrypt | This demo program uses a PKCS#11 module to encrypt a given file and test if the data can be decrpted. |
| EncryptPKCS7EnvelopedData | This helper class encrypts the given data using TrippleDES and encrypts the symmetric key using the public key in the given certificate. |
| GenerateAndSign4096 | This demo program generates a 4096 bit RSA key-pair on the token and signs some data with it. |
| GenerateKey | This demo program shows how to generate secret keys. |
| GenerateKeyPair | This demo program generates a 1024 bit RSA key-pair on the token and writes the public key to a file. |
| GenerateKeyPair2048 | This demo program generates a 2048 bit RSA key-pair on the token and writes the public key to a file. |
| GenerateKeyPairDSA | This demo program generates a 1024 bit DSA key-pair on the token and writes the public key to a file. |
| GenerateRandom | This demo program uses a PKCS#11 module to produce random data. |
| GenericFind | This class demonstrates how to use the GenericSearchTemplate class. |
| GetInfo | This demo program lists information about a library, the available slots, the available tokens and the objects on them. |
| GetInfoWithWrapperPath | This demo program lists information about a library, the available slots, the available tokens and the objects on them. |
| HashAndSign | This program signs a given file. |
| ImportCertificate | This demo program imports a given X.509 certificate onto a PKCS#11 token. |
| InitArgs | This demo program tries to call initialize with some arguments. |
| InitPIN | This program sets the normal user's PIN. |
| InitToken | This program initializes a token. |
| KeyAndCertificate | This class encapsulates a key and an optional certificate. |
| ListObjects | This demo program lists information about the objects on a token. |
| MAC | This demo program uses a PKCS#11 module to MAC a given file and test if the MAC can be verified. |
| ModuleInfo | This demo program lists information about a module. |
| NotifyTest | This demo program tries to set a callback Notify handler. |
| ParametersTest | Just to test the parameters classes. |
| PKCS11SignatureEngine | This is an implementation of a JCA Signature class that uses the PKCS#11 wrapper to create the signature. |
| ReadDataObject | This demo program read a data object with a specific label from the token. |
| ReadObjects | This demo program is similar to GetInfo. |
| SelfSignCertificate | Creates a self-signed X.509 certificate using a token. |
| SetPIN | This program sets the normal user's PIN. |
| SignAndVerify | Creates and verifies a signature on a token. |
| SignCertificate | Signs an X.509 certificate using a token. |
| SignCertificateRequest | Signs a PKCS#10 certificate request using a token. |
| SignCRL | Signs an X.509 CRL using a token. |
| SignOCSPRequest | Signs an OCSP request using a token. |
| SignPKCS7 | Creates a signature on a token. |
| SignRaw | Signs some raw data on the token. |
| SSLMechanisms | This demo program shows how to use the SSL mechanisms. |
| TokenPrivateKey | This is an adapter class that allows to use token keys as JCA private keys. |
| TripleDESEncrypt | This demo program uses a PKCS#11 module to encrypt a given file using Triple DES. |
| Util | This class contains only static methods. |
| VerifyPKCS7SignedData | This helper class simply verifies the signature of a PKCS#7 signed data object and extracts the verified content data. |
| VerifySignature |
This package contains serveral test classes that can be used as demo code.
Some of the classes in this package require the IAIK JCE library to compile
successfuly. Anyone can download an free evaluation copy of this library
from http://jcewww.iaik.at. Before you
can download the library, you must register, this is for free. Place the
iaik_jce_full.jar file in the JavaToWrapper/lib directory.
|
IAIK PKCS#11 Wrapper Demo version 1.2.17 |
||||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


We’ve just hired a new Digital Officer to help develop Momentum’s digital platforms and projects, including My Momentum. We’re fundraising to help cover our costs - if you could contribute £10 towards it, we would appreciate the support.
I'll chip inReturn to proposals {% endblock %}


Technical Notes¶
Dockerfile¶
Here we describe the Dockerfile for building iMARGI-Docker.

Here are only some essential instructions. Install Docker on Linux is the easiest.
Linux: Support the most recent 64 bit stable releases of Ubuntu, Debian, Fedora and CentOS. You need
root
orsudo
privileges. Generally, the following commands will automatically install Docker in your system. The second command will allow you to rundocker
commands withoutsudo
privileges. Learn more from the official documentation.sudo curl -fsSL https://get.docker.com |sh - # set Docker user, replace demo_user with you own user name, # then you can use docker command without sudo sudo usermod -aG docker demo_user
macOS (modern): Docker Desktop for macOS. Support macOS Sierra 10.12 and newer on a Apple computer after 2010.
Download Docker Desktop software for macOS and install. Click here to check instructions
Windows 10 (modern): Docker Desktop for Windows. Support the latest Windows 10 (64 bit) Pro, Enterprise or Education version.
First, enable virtualization of your CPU (most of modern Intel CPUs support virtualization). Check here to see how to enable it in BIOS.
Then, turn on Hyper-V. Check here to see how to turn on Hyper-V.
Finally, download Docker Desktop software for Windows and install, Click here to check instructions
Legacy solution: For older Mac and Windows systems that do not meet the requirements of Docker Desktop for Mac and Docker Desktop for Windows, you can install Docker Toolbox to use Docker.
First, enable virtualization of your CPU (most of modern Intel CPUs support virtualization). Check here to see how to enable it in BIOS.
Download the latest version of Docker Toolbox from GitHub repo
Change Docker Memory Settings on Windows and macOS¶
Enough memory is important to the iMARGI data processing pipeline. The required amount of memory depends on the size
of reference genome. For human genome, at least 8GB free memory are required by BWA. Hence,** the memory on the machine
needs to be more than 8 GB, which usually is 16 GB**. If the memory is not enough, BWA will generate an empty BAM file,
then it will throw out some strange error information in following steps, such as "KeyError: 'chr1'"
.
System memory requirement: 16 GB.
In addition, if you are using Windows or macOS, there is a memory limit to Docker, which is 2 GB as default. Hence, you need to increase it to more than 8 GB.
Here are simple instructions of how to change the settings.
- If you are using Docker Desktop for Windows or macOS, you can easily change the settings by right click the Docker icon (Whale) in the task bar, then go to Settings -> Advanced to change memory and CPU limits. More detail can be found in the Docker official docs of Get started with Docker for Windows, and Get started with Docker Desktop for Mac.
- If you are using Docker Toolbox for Windows or macOS, which uses VirtualBox as backend, so you need to open VirtualBox, then stop default VM, select it and click on settings, then make changes as you want.
There isn’t any limitation to Docker on Linux system, so don’t worry about it.
Run iMARGI-Docker with Non-root User¶
Linux system has strict user privilege control. root (id = 0) is the default user within a container. It will cause some
permission problem of some files or directories created by Docker container. So it’s better to run iMARGI-Docker
container using -u (--user)
option to override the default root user with your own user id (UID).
First of all, you need to add your user account to docker
group.
# set Docker user, replace demo_user with you own user name,
# then you can use docker command without sudo
sudo usermod -aG docker demo_user
When you run docker
command, you need -u
option to specify your user UID. You can use command id
in your linux
system to get your own UID. For example, my UID is 1043
, so I can run iMARGI-Docker with -u 1043
, then all the
output files and directories are all belong to my user ID. You need to replace the 1043
with your own UID.
id
# output of command 'id': uid=1043(frankyan) gid=1048(frankyan) groups=1048(frankyan),998(docker)
docker run --rm -t -u 1043 -v ~/imargi_example:/imargi zhonglab/imargi imargi_wrapper.sh \
-r hg38 \
-N HEK_iMARGI \
-t 16 \
-g ./ref/GRCh38_no_alt_analysis_set_GCA_000001405.15.fasta \
-1 ./data/sample_R1.fastq.gz\
-2 ./data/sample_R2.fastq.gz \
-o ./output
Solve bwa index
Failure Problem¶
As we created iMARGI-Docker on Linux system, so it works perfectly on Linux system. Generally, it should also work
perfectly on Windows and macOS. However, in our test, we found one critical problem which will cause baw index
failure. Here we explain the problem and give a solution to this problem.
First of all, you need to check you memory. Your computer needs 16 GB memory. If you are using Docker on Windows or macOS, you also need to set the Docker memory limit to more than 8 GB. If you are sure that the memory is enough, then try the following solution.
Description: When you use
imargi_wrapper.sh
without-i
option, the script will generate bwa index files automatically. But it might fail when you run it on Windows or macOS.Cause: Different operating systems have different file system formats, such as NTFS in Windows, APFS in macOS and ext4 in Linux. When we use
-v
option to mount host directory to Docker container, it’s a kind of map between different file system. Most of time, there isn’t any problem. However, some tools cannot handle this kind of hybrid situation, such asfsync
, which is utilized bybwa index
when building large genome index. Sobwa index
fails on Windows and macOS.Solution: Only Windows and macOS users need the solution. The simplest way is use pre-built bwa index files or build without Docker. We provide human hg38 bwa index files on our server (link to download). A technical solution to the problem is to build bwa index files in a Docker volume instead of a mounted host directory. This solution requires some knowledge of Docker volume. Here we only show demo command lines.


--- title: Health Status permalink: /admin-template/health-status/ layout: admin-template/layouts-single-side-nav ---
Sub System Health Health status of various sub-systems
Clusters Health Status of Akana Cluster on Apex Platform
Containers Inspect health of all available ND Containers
Gateway Connectivity Check sample API connectivity for all gateways