introduction.Rmd
legcoplus
is an R package to reorganise and present data from the Hong Kong Legislative Council (LegCo) APIs in a more useable manner. It provides functions that restructure data from multiple API requests to enhance the efficiency of the use of LegCo’s APIs.
This package requires the package legco
to fetch LegCo’s open data. To install legco
:
install.packages("devtools")
devtools::install_github("elgarteo/legco")
install.packages("devtools")
devtools::install_github("elgarteo/legcoplus")
And to load it before every use:
library(legcoplus)
The package contains the following functions:
answered_questions()
fetches more detailed information and the full text of questions put on the government by any given LegCo member.legco_member_affiliation
contains the declared political affiliation and constituency of every member in each term.member_voting_record()
returns the voting record in Council and committee meetings.search_committee()
searches committee by full or partial name of committee.search_division()
searches all division(s) (or votes) held in Council, House Committee, Finance Committe and its subcommittees meetings on any given date, by any given committee/subcommittee or during any given meeting slot.search_member()
searches everyone who speaks in LegCo with unique identifiers from different LegCo APIs’ databases or full or partial name.All functions can also be accessed with the prefix legco_
, e.g. legco_answered_questions()
and answered_questions()
return the same result.
LegCo APIs have an access limit of appraximately 1000 requests per hour per IP. As some of the functions in this package (such as answered_questions()
) make multiple requests at a time, the limit can be reached very easily. It is therefore advised to retrieve the data in smaller packets.
The function legco::questions()
returns only the subject of the question put on the government but not the full text and the answering body:
legco::questions(rundown_id = 294209)
## MeetingDate QuestionType
## 1 2013-01-23T00:00:00 Oral
## Subject Speaker SpeakerID
## 1 Policy on Public Access to Government Information KENNETH CHAN 106
## RundownID
## 1 294209
## HansardFileURL
## 1 https://www.legco.gov.hk/yr12-13/english/counmtg/hansard/cm0123-translate-e.pdf#nameddest=orq01
While the function answered_questions()
fetches the question text and other detailed information as well:
w <- answered_questions(rundown_id = 294209)
Note that if verbose
is enabled (which is by default), multiple messages will be shown. They are created when the function is making multiple requests to the APIs. The actual number of records in the final output data frame is displayed in the last message. For instance, it is 1 in the example above.
answered_questions()
returns the asking members of the main question and the supplementary questions (if any):
# All asking members (including supplementary questions)
legco::speakers(w$AskingSpeakerID)
## SpeakerID NameChi NameEng Type Initial FirstName LastName
## 1 109 梁繼昌 KENNETH LEUNG MB KL Kai-cheong LEUNG
## 2 106 陳家洛 KENNETH CHAN MB KC Ka-lok CHAN
## 3 66 湯家驊 RONNY TONG MB TKW Ka-wah TONG
## 4 95 田北俊 JAMES TIEN MB TPC Pei-chun TIEN
## 5 91 黃毓民 WONG YUK-MAN MB WYM Yuk-man WONG
# The answering official of the question
legco::speakers(w$AnsweringSpeakerID)
## SpeakerID NameChi
## 1 15 政制及內地事務局局長
## 2 13 財經事務及庫務局局長
## NameEng Type Initial FirstName
## 1 SECRETARY FOR CONSTITUTIONAL AND MAINLAND AFFAIRS PO SCMA
## 2 SECRETARY FOR FINANCIAL SERVICES AND THE TREASURY PO SFST
## LastName
## 1
## 2
The full text of the main question, supplementary questions (if any), answers and miscellaneous conversations (e.g. some member rising to a point of order) are contained in lists:
## [1] "MR KENNETH LEUNG (in Cantonese): My supplementary question is: Throughout the years, how many complaints about privacy have been lodged by directors in relation to the arrangement concerning the inspection of the Companies Register? "
## [1] "SECRETARY FOR FINANCIAL SERVICES AND THE TREASURY (in Cantonese): In dealing with the Companies Ordinance, the target of consultation is the public, and we had widely promoted the relevant contents. I think we had already extensively consulted the public. "
## [1] "PRESIDENT (in Cantonese): Which Secretary will reply? Secretary for Financial Services and the Treasury, please reply. "
It is also possible to fetch all questions raised by any given member and filter by parameters that are supported by legco::questions()
.
# Search all written questions asked by SpeakerID 61 and MemberID 209
# from January to April 2019 in Chinese
w <- answered_questions(speaker_id = 61, member_id = 209,
from = "2019-01-01", to ="2019-04-30",
type = "written", lang = "zh")
w[, 1:5]
## MeetingDate QuestionType Subject
## 1 2019-01-16T00:00:00 Written 有關南丫島附近撞船事故的跟進行動
## 2 2019-01-16T00:00:00 Written 延長產假措施對人手的影響
## 3 2019-01-30T00:00:00 Written 打擊引致擠塞的交通罪行
## 4 2019-02-27T00:00:00 Written 推廣智力運動
## 5 2019-03-27T00:00:00 Written 領展房地產投資信託基金擁有或售出的停車場
## 6 2019-04-03T00:00:00 Written 為永久造口病人提供財政資助
## Speaker SpeakerID
## 1 涂謹申 39
## 2 李國麟 61
## 3 涂謹申 39
## 4 涂謹申 39
## 5 涂謹申 39
## 6 李國麟 61
legco_member_affiliation
is a list containing data frames of the political affiliation and constituency of every member in each LegCo term. The dataframes are named by the respective TermID
they represent. For example, to fetch the data of the fifth term of LegCo:
# Political affiliation of the sixth term of LegCo
w <- legco_member_affiliation[["5"]]
head(w)
## SpeakerID MemberID NameEng NameChi TypeEng TypeChi
## 1 63 260 Andrew LEUNG Kwan-yuen 梁君彥 Functional 功能界別
## 2 39 209 James TO Kun-sun 涂謹申 Functional 功能界別
## 3 43 134 LEUNG Yiu-chung 梁耀忠 Functional 功能界別
## 4 53 187 Abraham SHEK Lai-him 石禮謙 Functional 功能界別
## 5 55 55 Tommy CHEUNG Yu-yan 張宇人 Functional 功能界別
## 6 61 258 Joseph LEE Kok-long 李國麟 Functional 功能界別
## ConstituencyEng ConstituencyChi
## 1 Industrial (First) 工業界（第一）
## 2 District Council (Second) 區議會(第二)
## 3 District Council (Second) 區議會(第二)
## 4 Real Estate and Construction 地產及建造界
## 5 Catering 飲食界
## 6 Health Services 衞生服務界
## AffiliationEng AffiliationChi
## 1 Business and Professionals Alliance for Hong Kong 香港經濟民生聯盟
## 2 Democratic Party 民主黨
## 3 Neighbourhood and Worker’s Service Centre 街坊工友服務處
## 4 Business and Professionals Alliance for Hong Kong 香港經濟民生聯盟
## 5 Liberal Party 自由黨
## 6
The function legco::voting_record()
of the Voting Results Database does not accept filtering parameters of any unique identifier from other databases such as SpeakerID
, MemberID
, CommitteeID
and SlotID
. Instead, it only takes the full Chinese names of LegCo members and full English name of the committee. With the function member_voting_record()
, it is possible to apply these idenitifers to search the voting results.
# Search the voting records of SpeakerID 102 and MemberID 910
# in CommitteeID 2567 since June 15, 2019.
w <- member_voting_record(speaker_id = 102, member_id = 910,
committee_id = 2567, from = "2019-06-15")
head(w)
## VoteTime Committee TermID
## 1 2019-06-28T15:57:41 Finance Committee 5
## 2 2019-06-28T15:57:41 Finance Committee 5
## 3 2019-06-28T16:45:28 Finance Committee 5
## 4 2019-06-28T16:45:28 Finance Committee 5
## 5 2019-06-28T18:45:03 Finance Committee 5
## 6 2019-06-28T18:45:03 Finance Committee 5
## MotionEn
## 1 Motion that discussion on FCR(2019-20)4 – PWSC(2018-19)32 be now adjourned
## 2 Motion that discussion on FCR(2019-20)4 – PWSC(2018-19)32 be now adjourned
## 3 FCR(2019-20)4 – PWSC(2018-19)32 RECOMMENDATION OF THE PUBLIC WORKS SUBCOMMITTEE MADE ON 20 MARCH 2019 – Organic Resources Recovery Centre Phase 2
## 4 FCR(2019-20)4 – PWSC(2018-19)32 RECOMMENDATION OF THE PUBLIC WORKS SUBCOMMITTEE MADE ON 20 MARCH 2019 – Organic Resources Recovery Centre Phase 2
## 5 FCR(2019-20)11 (a) Injection of $20 billion into the Research Endowment Fund, (b) rationalising the use of investment income of different pots of endowment of the Research Endowment Fund and (c) a new commitment of $3 billion for launching the Research Matching Grant Scheme for three years
## 6 FCR(2019-20)11 (a) Injection of $20 billion into the Research Endowment Fund, (b) rationalising the use of investment income of different pots of endowment of the Research Endowment Fund and (c) a new commitment of $3 billion for launching the Research Matching Grant Scheme for three years
## MotionCh
## 1 動議中止議程文件FCR(2019-20)4 – PWSC(2018-19)32的討論
## 2 動議中止議程文件FCR(2019-20)4 – PWSC(2018-19)32的討論
## 3 FCR(2019-20)4 – PWSC(2018-19)32 工務小組委員會在2019年3月20日所提出的建議 – 有機資源回收中心第二期
## 4 FCR(2019-20)4 – PWSC(2018-19)32 工務小組委員會在2019年3月20日所提出的建議 – 有機資源回收中心第二期
## 5 FCR(2019-20)11 (a)向研究基金注資200億元；(b) 理順研究基金內不同款項所賺取投資收入的運用，以及(c)開立新承擔額30億元，設立研究配對補助金計劃，為期3年
## 6 FCR(2019-20)11 (a)向研究基金注資200億元；(b) 理順研究基金內不同款項所賺取投資收入的運用，以及(c)開立新承擔額30億元，設立研究配對補助金計劃，為期3年
## OverallResult NameCh NameEn Vote
## 1 Negatived 馬逢國 MA Fung-kwok No
## 2 Negatived 朱凱廸 CHU Hoi-dick Yes
## 3 Passed 馬逢國 MA Fung-kwok Yes
## 4 Passed 朱凱廸 CHU Hoi-dick Yes
## 5 Passed 馬逢國 MA Fung-kwok Yes
## 6 Passed 朱凱廸 CHU Hoi-dick Yes
# Search the voting records of meeting with SlotID
w <- member_voting_record(slot_id = 177529)
head(w)
## VoteTime Committee TermID
## 1 2019-06-19T09:31:49 Public Works Subcommittee 5
## 2 2019-06-19T09:31:49 Public Works Subcommittee 5
## 3 2019-06-19T09:31:49 Public Works Subcommittee 5
## 4 2019-06-19T09:31:49 Public Works Subcommittee 5
## 5 2019-06-19T09:31:49 Public Works Subcommittee 5
## 6 2019-06-19T09:31:49 Public Works Subcommittee 5
## MotionEn
## 1 PWSC(2019-20)17 Campus Expansion at Ho Man Tin Slope
## 2 PWSC(2019-20)17 Campus Expansion at Ho Man Tin Slope
## 3 PWSC(2019-20)17 Campus Expansion at Ho Man Tin Slope
## 4 PWSC(2019-20)17 Campus Expansion at Ho Man Tin Slope
## 5 PWSC(2019-20)17 Campus Expansion at Ho Man Tin Slope
## 6 PWSC(2019-20)17 Campus Expansion at Ho Man Tin Slope
## MotionCh OverallResult NameCh
## 1 PWSC(2019-20)17 何文田斜坡校園擴建工程 Passed 盧偉國
## 2 PWSC(2019-20)17 何文田斜坡校園擴建工程 Passed 石禮謙
## 3 PWSC(2019-20)17 何文田斜坡校園擴建工程 Passed 張宇人
## 4 PWSC(2019-20)17 何文田斜坡校園擴建工程 Passed 李慧琼
## 5 PWSC(2019-20)17 何文田斜坡校園擴建工程 Passed 陳克勤
## 6 PWSC(2019-20)17 何文田斜坡校園擴建工程 Passed 梁美芬
## NameEn Vote
## 1 Ir Dr LO Wai-kwok Present
## 2 Abraham SHEK Absent
## 3 Tommy CHEUNG Yes
## 4 Starry LEE Yes
## 5 CHAN Hak-kan Yes
## 6 Dr Priscilla LEUNG Yes
The function search_committee()
allows searching committee with full or partial name of the committee:
# Search all Bills Committees established in the sixth term of LegCo
w <- search_committee(search_term = "bills committee", term_id = 5)
head(w[, 1:4])
## CommitteeID CommitteeCode
## 1 2724 BC/1/16
## 2 2834 BC/1/17
## 3 2960 BC/1/18
## 4 3011 BC/10/18
## 5 2712 BC/101/16
## 6 2844 BC/101/17
## NameEng
## 1 Bills Committee on Stamp Duty (Amendment) Bill 2017 and Stamp Duty (Amendment) (No. 2) Bill 2017
## 2 Bills Committee on Inland Revenue (Amendment) (No. 5) Bill 2017
## 3 Bills Committee on Inland Revenue (Amendment) (No. 6) Bill 2018
## 4 Bills Committee on Occupational Retirement Schemes (Amendment) Bill 2019
## 5 Bills Committee on Arbitration (Amendment) Bill 2016
## 6 Bills Committee on Banking (Amendment) Bill 2017
## NameChi
## 1 《2017年印花稅(修訂)條例草案》及《2017年印花稅(修訂)(第2號)條例草案》委員會
## 2 《2017年稅務(修訂)(第5號)條例草案》委員會
## 3 《2018年稅務(修訂)(第6號)條例草案》委員會
## 4 《2019年職業退休計劃(修訂)條例草案》委員會
## 5 《2016年仲裁(修訂)條例草案》委員會
## 6 《2017年銀行業(修訂)條例草案》委員會
By default, search_committee()
returns results with the exact match of the search term. It is possible to disable exact matching so that the function returns results containing any of the English words/Chinese characters in the search term:
# Search all committees with either "taxi" or "ferry" in the name
w <- search_committee(search_term = "taxi ferry", exact = FALSE)
w[, 1:4]
## CommitteeID CommitteeCode
## 1 3016 BC/102/18
## 2 2905 BC/104/17
## NameEng
## 1 Bills Committee on Franchised Taxi Services Bill
## 2 Bills Committee on Ferry Services (Amendment) Bill 2018
## NameChi
## 1 《專營的士服務條例草案》委員會
## 2 《2018年渡輪服務(修訂)條例草案》委員會
# Search all committees with either "動" or "植" in the name
w <- search_committee(search_term = "動植", exact = FALSE)
head(w[, 1:4])
## CommitteeID CommitteeCode
## 1 2737 BC/53/16
## 2 2768 BC/6/16
## 3 2492 PL/FE/S3
## 4 2703 PL/FE/S4
## 5 2992 PL/TP/S2
## 6 2318 SC/10/13
## NameEng
## 1 Bills Committee on Cross-boundary Movement of Physical Currency and Bearer Negotiable Instruments Bill
## 2 Bills Committee on Protection of Endangered Species of Animals and Plants (Amendment) Bill 2017
## 3 Subcommittee on Issues Relating to Animal Welfare and Cruelty to Animals
## 4 Subcommittee to Study Issues Relating to Animal Rights
## 5 Subcommittee on Hillside Escalator Links and Elevator Systems
## 6 Subcommittee on Proposed Resolution under Section 5(4) of the Motor Vehicles (First Registration Tax) Ordinance
## NameChi
## 1 《實體貨幣及不記名可轉讓票據跨境流動條例草案》委員會
## 2 《2017年保護瀕危動植物物種(修訂)條例草案》委員會
## 3 有關動物福利及殘酷對待動物事宜小組委員會
## 4 研究動物權益相關事宜小組委員會
## 5 上坡地區自動扶梯連接系統和升降機系統小組委員會
## 6 根據《汽車(首次登記稅)條例》第5(4)條動議的擬議決議案小組委員會
search_committee()
returns results containing the search term, including non-exact words. For instance, records containing the term "taxi"
are included in the search result of the search term "tax"
:
# Search result of "tax"
w <- search_committee(search_term = "tax")
w$NameEng
## [1] "Bills Committee on Franchised Taxi Services Bill"
## [2] "Bills Committee on Inland Revenue and MPF Schemes Legislation (Tax Deductions for Annuity Premiums and MPF Voluntary Contributions) (Amendment) Bill 2018"
## [3] "Bills Committee on Inland Revenue (Profits Tax Exemption for Funds) (Amendment) Bill 2018"
## [4] "Bills Committee on Inland Revenue (Amendment) (Tax Concessions) Bill 2019"
## [5] "Subcommittee on Tax Reserve Certificates (Rate of Interest) (Consolidation) (Amendment) Notice 2018"
## [6] "Subcommittee on Proposed Resolution under Section 5(4) of the Motor Vehicles (First Registration Tax) Ordinance"
## [7] "Subcommittee on Inland Revenue (Exchange of Information relating to Taxes) (United States of America) Order"
## [8] "Subcommittee on Specification of Arrangements (The Mainland of China) (Avoidance of Double Taxation and the Prevention of Fiscal Evasion with respect to Taxes on Income) (Fourth Protocol) Order"
## [9] "Subcommittee on Exemption from Profits Tax (People's Bank of China Debt Instrument) Order"
To have only exact words in the result, insert a space before and/or after the word, e.g. " tax "
:
# Search result of " tax "
w <- search_committee(search_term = " tax ")
w$NameEng
## [1] "Bills Committee on Inland Revenue (Profits Tax Exemption for Funds) (Amendment) Bill 2018"
## [2] "Subcommittee on Tax Reserve Certificates (Rate of Interest) (Consolidation) (Amendment) Notice 2018"
## [3] "Subcommittee on Exemption from Profits Tax (People's Bank of China Debt Instrument) Order"
legco::voting_record()
of the LegCo Voting Result Database does not support the use of individual identifiers in search and the presentation of an index of votes. With the function search_division()
, it is possible to search division(s) with CommitteeID, and SlotID:
# Search votes conducted on April 3, 2019 by the Establishment Subcommittee
w <- search_division(search_date = "2019-04-03", committee_id = 2943)
w[, c(1:4, 24)]
## VoteTime Committee TermID
## 1 2019-04-03T09:46:15 Establishment Subcommittee 5
## 33 2019-04-03T09:48:17 Establishment Subcommittee 5
## 65 2019-04-03T09:50:03 Establishment Subcommittee 5
## MotionCh
## 1 EC(2018-19)30建議將3個編外職位轉為常額職位，即土木工程拓展署的3個總工程師職位，以推展政策措施，增加短、中及長期的土地供應
## 33 EC(2018-19)30 - 建議開設1個編外職位，即地政總署的1 個總產業測量師職位，以及將1個編外職位轉為常額職位，即規劃署的1個總城市規劃師，以推展政策措施，增加短、中及長期的土地供應
## 65 EC(2018-19)30 - 建議在政府產業署開設1個編外職位，即1 個首長級丙級政務官職位，以及開設1個常額職位，即1個總產業測量師/首席物業估價測量師常額職位，以推展政策措施，增加短、中及長期的土地供應
## OverallYesCount
## 1 17
## 33 21
## 65 18
# Search vote conducted during a specific meeting
w <- search_division(slot_id = 179602)
w[, c(1:4, 24)]
## VoteTime Committee TermID MotionCh OverallYesCount
## 1 2019-04-03T19:07:55 Council Meeting 5 「毋忘六四」議案 NA
By default, search_division()
returns an index list of votes only. To fetch the voting record of each member:
# Search voting record of each member conducted during a specific meeting
w <- search_division(slot_id = 179602, index = FALSE)
head(w[, c(1:5, 28:29, 31)])
## VoteTime Committee TermID MotionCh
## 1 2019-04-03T19:07:55 Council Meeting 5 「毋忘六四」議案
## 2 2019-04-03T19:07:55 Council Meeting 5 「毋忘六四」議案
## 3 2019-04-03T19:07:55 Council Meeting 5 「毋忘六四」議案
## 4 2019-04-03T19:07:55 Council Meeting 5 「毋忘六四」議案
## 5 2019-04-03T19:07:55 Council Meeting 5 「毋忘六四」議案
## 6 2019-04-03T19:07:55 Council Meeting 5 「毋忘六四」議案
## MotionEn NameCh NameEn Vote
## 1 MOTION ON “NOT FORGETTING THE 4 JUNE INCIDENT” 梁君彥 Andrew LEUNG Present
## 2 MOTION ON “NOT FORGETTING THE 4 JUNE INCIDENT” 涂謹申 James TO Yes
## 3 MOTION ON “NOT FORGETTING THE 4 JUNE INCIDENT” 梁耀忠 LEUNG Yiu-chung Yes
## 4 MOTION ON “NOT FORGETTING THE 4 JUNE INCIDENT” 石禮謙 Abraham SHEK No
## 5 MOTION ON “NOT FORGETTING THE 4 JUNE INCIDENT” 張宇人 Tommy CHEUNG Abstain
## 6 MOTION ON “NOT FORGETTING THE 4 JUNE INCIDENT” 李國麟 Prof Joseph LEE Yes
The unique identifiers of different LegCo databases are not interchangeable, for instance SpeakerID
used in the Hansard Database and MemberID
used in the Schedule Database. search_member()
provides an easy way to work with SpeakerID
and MemberID
interchangeably:
# A combined list of all members from legco::speakers() and legco::member()
w <- search_member()
w[63:64, ]
## SpeakerID MemberID Type NameChi NameEng TermID TitleEng SurnameEng
## 63 161 929 MB 陳凱欣 CHAN HOI-YAN 5 CHAN
## 64 144 912 MB 容海恩 YUNG HOI-YAN 5 YUNG
## FirstnameEng EnglishName HonourableEng SurnameChi FirstnameChi TitleChi
## 63 Hoi-yan 陳 凱欣 議員
## 64 Hoi-yan JP 容 海恩 議員
## HonourableChi
## 63
## 64 JP
# Lookup the MemberID of SpeakerID 63
w <- search_member(speaker_id = 63)
w$MemberID
## [1] 260
# Lookup the SpeakerID of MemberID 273
w <- search_member(member_id = 273)
w$SpeakerID
## [1] 75
search_member()
also allows searching by full or partial name in English or Chinese:
# Lookup members with "謙" in their names
search_member(search_term = "謙")
## SpeakerID MemberID Type NameChi NameEng TermID TitleEng SurnameEng
## 1 82 101 MB 葉國謙 IP KWOK-HIM 4 Hon IP
## 2 53 187 MB 石禮謙 ABRAHAM SHEK 4, 5 Hon SHEK
## FirstnameEng EnglishName HonourableEng SurnameChi FirstnameChi TitleChi
## 1 Kwok-him GBS, JP 葉 國謙 議員
## 2 Lai-him Abraham GBS, JP 石 禮謙 議員
## HonourableChi
## 1 GBS, JP
## 2 GBS, JP
# Lookup members with "ting" in their names
search_member(search_term = "ting")
## SpeakerID MemberID Type NameChi NameEng TermID TitleEng SurnameEng
## 1 138 911 MB 林卓廷 LAM CHEUK-TING 5 LAM
## 2 65 267 MB 黃定光 WONG TING-KWONG 4, 5 Hon WONG
## FirstnameEng EnglishName HonourableEng SurnameChi FirstnameChi TitleChi
## 1 Cheuk-ting 林 卓廷 議員
## 2 Ting-kwong GBS, JP 黃 定光 議員
## HonourableChi
## 1
## 2 GBS, JP
The searching parameter of search_member()
has the same options with that of search_committee()
such as the exact search option. Refer here for detailed examples on how to apply these options in your search.


LEIGH CAMPBELL: I've found some great non-greasy, hydrating sunscreens that sit perfectly under makeup.
by Leigh CampbellThanks to our brand partner, Sunsense
I’m just going to come right out and say it. I’m obsessed with sunscreen.
Being a beauty editor (for the last 15 years!) means I get to trial all of the SPF lotions, creams and sprays and it’s still one of the most exciting parts of my job. It also means I’m a pretty tough judge.
There’s plenty of sunscreens out there that will help protect your skin from the sun’s harmful UV rays, but they can be thick, white and hard to apply. And let’s face it – if it doesn’t feel nice you’re not going to use it, right?
So, let’s take a look at the ones I’ve been playing with lately from SunSense.
Sunscreens for the face.
 So let’s start at the top.
I recently had a baby and so instead of spending every day inside an office, I’m doing different things throughout the day and as a result I’ve found my suncare needs have changed due to the increased time I’m spending outdoors.
So it’s already a plus that all of the following sunscreens offer SPF50+ UVA and UVB broad-spectrum protection, and are dermatologically tested and fragrance free.
Sunscreen #1: SunSense Daily Face SPF50+ Invisible Tint Finish.
I was intrigued by this cream because I really liked the idea of the 'invisible tint'. I decided to try it out on a day I was only going to pilates then doing chores around the house, so I wouldn't be wearing makeup.
The formula contains moisturising vitamin B3 but is also an oil-free matte finish, which is a lovely balance of moisture without looking shiny.
As I swiped it over my face and blended it in I could see what they meant by 'invisible' - rather than the tint offering colour it instead just softly blurs little imperfections so my complexion looks a bit more uniform.
I find that it is perfect for 'off-duty' days and I've since been wearing it over my serum and just filling in my brows.
Sunscreen #2: SunSense Moisturising Face SPF50+
If the above is a lightweight cream then this face sunscreen almost feels like a lotion-serum hybrid. It's more fluid and more hydrating, offering moisture to my skin while also being SPF50+, broad-spectrum sun protection.
I decided to test this one as I more traditionally use face sunscreen, which is under makeup. I swiped it on and blended it in, making sure I also paid attention to my neck and chest. I then waited about 20 minutes (I did my hair) before applying makeup.
It sat perfectly over my foundation and the dewiness of the formula remained. I powdered my t-zone as normal so I still looked glowy but not oily. My powder and bronzer didn't pull, either, when swiped across my face which was great.
Sunscreens for the body.
While I've always been really good at wearing sunscreen on my face I'm willing to admit I've been a bit more slack with my body.
But now I'm out and about with the baby most days instead of inside an office, I needed to step up my body SPF sunscreen game.
Sunscreen #1: SunSense Sensitive Invisible SPF50+.
I opted to use this one when going about a regular day - a trip to the post office, walking to the shops, hanging out the washing.
I loved it because it's paediatrician-tested, so it's suitable for babies six months and up. I'm a carrying a boy who'll be at that stage soon, so it's good to know this will help to protect his skin.
The 'invisible' in the name doesn't lie, either - I really felt like I almost wasn't wearing it, so it's great for when you don't want a greasy sunscreen feeling in that pretty dress or nice top.
Sunscreen #2: SunSense Sport SPF50+.
It was a no-brainer to reach for this one when I was taking the little guy down to the beach for some fresh air in the early morning or late afternoon. It's ace because it's both sweat and sand resistant.
I swear less sand stuck to my legs and it was really good to know that even when I got sweaty carting a baby and all the beach paraphernalia down to our spot that I was still highly protected from the UVB and UVA rays.
Sunscreen #3: SunSense Ultra SPF50+.
This is what I call the all-rounder. It's still four hours water resistant like the two others, but it's formulated with the whole family in mind.
My husband has very different skin and texture preferences to me and yet we both like this one which is great - it means you can chuck one tube in your beach bag and everyone is covered
It doesn't leave a greasy residue and it's hydrating to my skin, and offers SPF50+ protection.
All in all, I can happily say these sunscreens pass the tests of my everyday life. The obsession continues!
Have you tried SunSense? What's your best sunscreen and makeup tip? Share below.
This article was brought to you with thanks to our brand partner, SunSense.
*Always read the label. Follow the directions for use. Avoid prolonged sun exposure and wear protective clothing, hats and eyewear to further reduce risk. Frequent re-application is required.
Excited for summer? Take our survey to win $50 to put towards a summer treat.
SunSense is dedicated to protecting sun aware Australians serious about protecting themselves and their families from the sun's harmful rays. Our range has been developed to suit individual ages and skin types, making it the perdect sunscreen for every occasion.
As part of our commitment to protect Aussies, we've partnered with the Melanoma Institute of Australia, to highlight rates of Melanoma globally.
Ego Pharmaceuticals is an Australian family business, we bring expert products to Australians who want protection they can trust. Available at your local pharmacy.


TPis dedicated to be the leading provider of total solution for Intelligent Transportation System (ITS), focusing on GPS tracking field.
Reliable product, fast reaction and customization solution, is our core competitiveness.
Think Power is helping customer to collect, transmit and analyze data for management, covering vehicle, pets, person and asset.


ex_video_set_scale_mode
Sets the scale mode for the video
Syntax
ex_video_set_scale_mode(mode)
| Argument |
Description |
| mode |
The scale mode for the video "fill", "cover" or "contain" |
Returns nothing
Description
Sets the scale mode for the video.
- "fill" the video fills in the container entirely, no letterbox or crop, but stretching may occur
- "cover" ensures the video covers the container, no letterboxing but cropping may occur
- "contain" fits the video inside the container but keeps aspect ratio, letterboxing may occur
Example
//Set the scale mode for the video to "cover"
ex_video_set_scale_mode("cover");
Minimum Supported Version
exVideo 1.0.0


Video-Gaming Platforms
It has been shown that action video game players have better hand–eye coordination and visuo-motor skills, such as their resistance to distraction, their sensitivity to information in the peripheral vision and their ability to count briefly presented objects, than nonplayers.Researchers found that such enhanced abilities could be acquired by training with action games, involving challenges that switch attention between different locations, but not with games requiring concentration on single objects. It has been suggested by a few studies that online/offline video gaming can be used as a therapeutic tool in the treatment of different mental health concerns.
In Steven Johnson's book, Everything Bad Is Good for You, he argues that video games in fact demand far more from a player than traditional games like Monopoly. To experience the game, the player must first determine the objectives, as well as how to complete them. They must then learn the game controls and how the human-machine interface works, including menus and HUDs. Beyond such skills, which after some time become quite fundamental and are taken for granted by many gamers, video games are based upon the player navigating (and eventually mastering) a highly complex system with many variables. This requires a strong analytical ability, as well as flexibility and adaptability. He argues that the process of learning the boundaries, goals, and controls of a given game is often a highly demanding one that calls on many different areas of cognitive function. Indeed, most games require a great deal of patience and focus from the player, and, contrary to the popular perception that games provide instant gratification, games actually delay gratification far longer than other forms of entertainment such as film or even many books.Some research suggests video games may even increase players' attention capacities.
Learning principles found in video games have been identified as possible techniques with which to reform the U.S. education system.It has been noticed that gamers adopt an attitude while playing that is of such high concentration, they do not realize they are learning, and that if the same attitude could be adopted at school, education would enjoy significant benefits.Students are found to be "learning by doing" while playing video games while fostering creative thinking.
The U.S. Army has deployed machines such as the PackBot and UAV vehicles, which make use of a game-style hand controller to make it more familiar for young people.According to research discussed at the 2008 Convention of the American Psychological Association, certain types of video games can improve the gamers' dexterity as well as their ability to do problem solving. A study of 33 laparoscopic surgeons found that those who played video games were 27 percent faster at advanced surgical procedures and made 37 percent fewer errors compared to those who did not play video games. A second study of 303 laparoscopic surgeons (82 percent men; 18 percent women) also showed that surgeons who played video games requiring spatial skills and hand dexterity and then performed a drill testing these skills were significantly faster at their first attempt and across all 10 trials than the surgeons who did not play the video games first.
An experiment carried out by Richard De Lisi and Jennifer Woldorf demonstrates the positive effect that video games may have on spatial skills. De Lisi and Woldorf took two groups of third graders, one control group and one experiment group. Both groups took a paper-and-pencil test of mental rotation skills. After this test, the experiment group only played 11 sessions of the game Tetris. This game was chosen as it requires mental rotation. After this game, both groups took the test again. The result showed that the scores of the experiment group raised higher than that of the control group, thereby confirming this theory.
The research showing benefits from action games has been questioned due to methodological shortcomings, such as recruitment strategies and selection bias, potential placebo effects, and lack of baseline improvements in control groups.In addition, many of the studies are cross-sectional, and of the longitudinal interventional trials, not all have found effects.[86] A response to this pointed out that the skill improvements from action games are more broad than predicted, such as mental rotation, which is not a common task in action games.Action gamers are not only better at ignoring distractions, but also at focusing on the main task.
Obejections to Video Games
Like other media, such as rock music (notably heavy metal music and gangsta rap), video games have been the subject of objections, controversies and censorship, for instance because of depictions of violence, criminal activities, sexual themes, alcohol, tobacco and other drugs, propaganda, profanity or advertisements. Critics of video games include parents' groups, politicians, religious groups, scientists and other advocacy groups. Claims that some video games cause addiction or violent behavior continue to be made and to be disputed.
There have been a number of societal and scientific arguments about whether the content of video games change the behavior and attitudes of a player, and whether this is reflected in video game culture overall. Since the early 1980s, advocates of video games have emphasized their use as an expressive medium, arguing for their protection under the laws governing freedom of speech and also as an educational tool. Detractors argue that video games are harmful and therefore should be subject to legislative oversight and restrictions. The positive and negative characteristics and effects of video games are the subject of scientific study. Results of investigations into links between video games and addiction, aggression, violence, social development, and a variety of stereotyping and sexual morality issues are debated.A study was done that showed that young people who have had a greater exposure to violence in video games ended up behaving more aggressively towards people in a social environment.
In 2018, the World Health Organization declared "gaming disorder" a mental disorder for people who are addicted to video games.Studies have shown video games can negatively effect health and mental state for some players.
Possible Benefits
In spite of the negative effects of video games, certain studies indicate that they may have value in terms of academic performance, perhaps because of the skills that are developed in the process. “When you play ... games you’re solving puzzles to move to the next level and that involves using some of the general knowledge and skills in maths, reading and science that you’ve been taught during the day,” said Alberto Posso an Associate Professor at the Royal Melbourne Institute of Technology, after analysing data from the results of standardized testing completed by over 12,000 high school students across Australia. As summarized by The Guardian,the study (published in the International Journal of Communication) "found that students who played online games almost every day scored 15 points above average in maths and reading tests and 17 points above average in science." However, the reporter added an important comment that was not provided by some of the numerous Web sites that published a brief summary of the Australian study: "[the] methodology cannot prove that playing video games were the cause of the improvement." The Guardian also reported that a Columbia University study indicated that extensive video gaming by students in the 6 to 11 age group provided a greatly increased chance of high intellectual functioning and overall school competence.
In an interview with CNN, Edward Castronova, a professor of Telecommunications at Indiana University Bloomington said he was not surprised by the outcome of the Australian study but also discussed the issue of causal connection. "Though there is a link between gaming and higher math and science scores, it doesn't mean playing games caused the higher scores. It could just be that kids who are sharp are looking for a challenge, and they don't find it on social media, and maybe they do find it on board games and video games," he explained.
Video games have also been proven to raise self-esteem and build confidence. It gives people an opportunity to do things that they cannot do offline, and to discover new things about themselves. There is a social aspect to gaming as well – research has shown that a third of video game players make good friends online. As well as that, video games are also considered to be therapeutic as it helps to relieve stress. Although short term, studies have shown that children with developmental delays gain a temporary physical improvement in health when they interact and play video games on a regular, and consistent basis due to the cognitive benefits and the use of hand eye coordination.
Self Determination Theory
Self-determination theory (SDT) is a macro theory of human motivation based around competence, autonomy, and relatedness to facilitate positive outcomes.SDT provides a framework for understanding the effects of playing video games; well-being, problem solving, group relations, physical activities.These factors can be measured to determine the effect video games can have on people.
Well Being
The ability to create an ideal image of one's self and being given multiple options to change that image gives a sense of satisfaction. This topic has much controversy; it is unknown whether this freedom can be beneficial to one's character or detrimental. With increased game usage, a player can become too invested in a fictionally generated character, where the desire to look that way overpowers the enjoyment of the game.[102] Players see this character creation as entertainment and a release, creating a self-image they could not obtain in reality, bringing comfort outside of the game from lack of investment to the fictional character. Problems that arise based on character design may be link to personality disorders.
Problem Solving Skills
Cognitive skills can be enhanced through repetition of puzzles, memory games, spatial abilities and attention control.Most video games present opportunities to use these skills with the ability to try multiple times even after failure. Many of these skills can be translated to reality and problem solving. This allows the player to learn from mistakes and fully understand how and why a solution to a problem may work. Some researchers believe that continual exposure to challenges may lead players to develop greater persistence over time after a study was shown that frequent players spent more time on puzzles in task that did not involve video games.[100][101] Although players were shown to spend more time on puzzles, much of that could have been due to the positive effects of problem solving in games, which involve forming strategy and weighing option before testing a solution.
Representatives of Game Academy claim that such games as Civilization, Total War, or X-Com, where strategy and resource management are key, help players to develop skills that are of great use to managers. Also, they found out that IT workers play unusual puzzle games like Portal or tower defense games like Defense Grid more often than specialists from other fields.
In a study that followed students through school, students that played video games showed higher levels of problem solving than students who did not.[100] This contradicts the previous study in that higher success rate was seen in video game players. Time being a factor for problem solving led to different conclusions in the different studies. See video game controversies for more.
Group Realations
Online gaming being on the rise allows for video game players to communicate and work together in order to accomplish a certain task. Being able to work as a group in a game translates well to reality and jobs, where people must work together to accomplish a task. Research on players in violent and non-violent games show similar results, where the players relations improved to improve synergy
Physical Activity
Virtual reality (VR) games generally require players to use a special head-mounted unit that provides stereoscopic screens and motion tracking to immerse a player within virtual environment that responds to their head movements. Some VR systems include control units for the player's hands as to provide a direct way to interact with the virtual world. VR systems generally require a separate computer, console, or other processing device that couples with the head-mounted unit.


It's a cooperative game designed for 2 players, each playing on a separate device.
The only connection you need between each other is your voice.
You can be in the same room or on the other part of the world, as long as you can hear each other.
One player takes a role of a HACKER lost in the CYBERSPACE maze of a corporate network. Your need to move around CYBERSPACE, read the access codes to NAVIGATOR and find the TARGET node to hack it.
The other player takes a role of a NAVIGATOR who uses a terminal to decode the access codes they got from HACKER, read the map of CYBERSPACE and help HACKER find the way to the TARGET node.


On chain rule, computational graphs, and backpropagation
…Another post on backpropagation?
Sort of. I know, everyone and their brother has a post on backpropagation. In fact, I already have a post on backpropagation here, so why am I writing another post? Well, for one, this post isn’t really about backpropagation per se, it’s about how we can think about neural networks in a completely different way than we’re used to using a computational graph representation and then use it to derive backpropagation from a fundamental formula of calculus, chain rule.
This post is entirely inspired from colah’s blog post Calculus on Computational Graphs: Backpropagation so please read through that first. I will reiterate a lot of what’s on there but will surely not do as good a job. My purpose here is more an extension of that post to thinking about neural networks as computational graphs.
######Assumptions: I assume you remember some high school calculus on taking derivatives, and I assume you already know the basics about neural networks and have hopefully implemented one before.
Calculus’ chain rule, a refresher
Before I begin, I just want to refresh you on how chain rule works.
Chain rule is the process we can use to analytically compute derivatives of composite functions. A composite function is a function of other function(s). That is, we might have one function $f$ that is composed of multiple inner or nested functions.
For example, is a composite function. We have an outer function $f$, an inner function $g$, and the final inner function $h(x)$
Let’s say $f(x) = e^{sin(x^2)}$, we can decompose this function into 3 separate functions:
$f(x) = e^x $, $g(x) = sin(x)$, and $h(x) = x^2$, or what it looks like as a nested function:
And to get the derivative of this function with respect to x, $\frac{d{f}}{d{x}}$, we use the chain rule:
, such that, (because the derivative of $e^x$ is just $e^x$), (because the derivative of $sin$ is $cos$), therefore… So in each of these cases, I just pretend that the inner function is a single variable and derive it as such. The other way to view it,
, then create some temporary, substitution variables $u = sin(v)$, and $v = x^2$, now $f(u) = e^u$, and you can use chain rule as above.
Computational graphs
A computational graph is a representation of a composite function as a network of connected nodes, where each node is an operation/function. It is similar in appearance to a feedforward neural network (but don’t get them confused). When we visualize these graphs, we can easily see all the nested relationships and follow some basic rules to come up with derivatives of any node we want.
Let’s visualize the above simple composite function as a computational graph.
As you can see, the graph shows what inputs get sent to each function. Every connection is an input, and every node is a function or operation (used here interchangeably).
What’s neat about these graphs is that we can visualize chain rule. All we need to do is get the derivative of each node with respect to each of its inputs.
Now you can follow along the graph and do some dimensional analysis to compute whichever derivatives you want by multiplying the ‘connection’ derivatives (derivatives between a pair of connected nodes) along a path. For example, if we want to get $df/dx$, we simply multiply the connection derivatives starting from $f$ all the way to $x$, which gives us the same equation as the chain rule formula above:
Now all of that was probably painfully obvious to a lot of you, but I just want to make this as accessible as possible.
#####Re-imagining neural networks as computational graphs
A neural network, if you haven’t noticed, is essentially a massive nested composite function. Each layer of a feedforward neural network can be represented as a single function whose inputs are a weight vector and the outputs of the previous layer. This means we can build a nice computational graph out of it and use it to derive the backpropagation algorithm.
Here’s a 3 layer neural network (1 input layer, 1 hidden layer, 1 output layer), which could be used to solve something like the good ol’ XOR problem.
So that is just a typical feedforward neural network visualization. Nothing new here, should be very familiar. Of course there are weight vectors hanging around in between the layers. It’s a very intuitive and convenient representation of a neural network in terms of the information flow through the network. However, I don’t think it’s the best way to think about it or visualize it in terms of a computational implementation. We’re going to try re-visualizing this as a computational graph, such that each node is no longer an abstract “neuron” with weights modulating the connection to other neurons, but instead where each node is a single computation or operation and the arrows are no longer weighted connections but merely indications of where inputs are being ‘sent’. I’m going to switch these graphs to a vertical orientation just for better presentation, and the notation will be different.
Here L3 denotes the output layer, L2 the hidden layer, and L1 the input layer. Similarly, $\theta_2$ denotes the weight vector ‘between’ layer 2 and layer 3; $\theta_1$ denotes the weight vector ‘between’ layer 1 and layer 2. The $\sigma$ notation just refers to the sigmoid operation that takes place within those particular nodes (however, the outputs of those nodes will be referred to using the L notation, i.e. L1, L2, and L3).
As you can see, it’s a fairly different way of looking at the neural network. This is a functional representation. It shows the step by step functions that occur and the inputs those functions operate on. For example, the L2 layer function operates on two inputs: the L1 layer outputs (a vector) and the weight vector $\theta_1$. Likewise, the L3 function operates on L2 and $\theta_2$, and is our final output. If you’re wondering where the bias nodes went, they’re implicitly included in each L layer’s output (i.e. the scalar 1 is added to each L vector). Each weight vector still contains a weight for the bias.
Let’s list out the computational steps to compute the neural network output, L3.
Now let’s compute the ‘connection’ derivatives. This is just simple calculus on individual functions. Remember that $\sigma’=\sigma(1-\sigma)$
Here’s our computational graph again with our derivatives added.
#####Backpropagation
Remember that the purpose of backpropagation is to figure out the partial derivatives of our cost function (whichever cost function we choose to define), with respect to each individual weight in the network: $\frac{\partial{C}}{\partial\theta_j}$, so we can use those in gradient descent. We’ve already seen how we can create a computational graph out of our neural network where the output layer is a composite function of the previous layers and the weight vectors. In order to figure our $\frac{\partial{C}}{\partial\theta_j}$, we can extend our computational graph so that the ‘outer’ function is our cost function, which of course has to be a function of the neural network output.
Everything is the same as the computational graph of just our neural network, except now we’re taking the output of the neural network and feeding it into the cost function, which also requires the parameter $y$ (the expected value given the input(s) $x$).
The most common cost function used for a network like this would be the cross-entropy cost function, with the generic form being: where $h_{\theta}(x)$ is the output (could be a scalar or vector depending on the number of output nodes) of the network, $y$ is the expected value given input(s) $x$, and $m$ is the number of training examples.
We can get the derivative of this cost function with respect to the output layer function L3 (aka $h_{\theta}(x)$) to add to our computational graph. It’s not worth going through the steps to derive it here, but if you ask WolframAlpha to do it, it will give you this: So now we have everything we need to compute $\frac{\partial{C}}{\partial\theta_j}$. Let’s compute $\frac{\partial{C}}{\partial\theta_2}$ and see if it compares to the textbook backpropagation algorithm.
We’re just following the path from the top (the cost function) down to the node we’re interested in, in this case, $\theta_2$. We multiply the partial derivatives along that path to get $\frac{\partial{C}}{\partial\theta_2}$. As you’ll notice, it’s obvious from a dimensional analysis perspective that doing this multiplication gets us what we want. We already calculated what the ‘connection’ derivatives were above, so we’ll just substitute them back in and do the math to get what we want.
It should be clear that this is in fact the same result we’d get from backpropagation by calculating the node deltas and all of that. We just derived a more general form of backpropagation by using a computational graph.
But you might still be skeptical, let’s calculate $\frac{\partial{C}}{\partial\theta_1}$, one more layer deep, just to prove this is a robust method. Same process as above. Again, here’s a visualization of the path we follow along the computational graph to where we want. You can also just think of it as dimensional analysis.
And there you have it. Just to check against the usual backpropagation method: ######Comparing against ordinary backpropagation We would start by calculating the output node delta: $\delta^3 = (L3 - y)$ Then we would calculate the hidden layer delta: Now that we have all the layer deltas (we don’t calculate deltas for input layer), we use this formula to get $\frac{\partial{C}}{\partial{\theta_j^l}}$:
where $l$ is the layer number, thus L2 is the hidden layer output. In our case, we’ll find $\frac{\partial{C}}{\partial{\theta_1}}$ then we’ll substitute in $\delta^2$ from our calculation above and we’ll substitute in $\delta^3$
Important to note that with the derivation using the computational graph, we have to be careful about dimensional analysis and when to use which multiplication operator (dot product or element-wise), whereas with textbook backpropagation, those things are made more explicit. The computational graph method above makes it seem like we only use dot products when that might be computationally impossible. Thus, the computational graph method requires a bit more thought.
#####Conclusion
I think representing neural networks (and probably all types of algorithms based on composite functions) as computational graphs is a fantastic way of understanding how to implement one in code in a functional way and allows you to have all sorts of differential fun with ease. They give us the tools to derive backpropagation from an arbitrary neural network architecture. For example, by unfolding a recurrent neural network, we could generate a computational graph and apply the same principles to derive backpropagation through time.
######References
- http://colah.github.io/posts/2015-08-Backprop/
- https://en.wikipedia.org/wiki/Chain_rule
- https://en.wikipedia.org/wiki/Automatic_differentiation
- http://www.wolframalpha.com


EDI Lint
Paste EDI below and you'll get a nicely formatted version.
Use the buttons at the bottom to turn segment types on & off.
Parsing Error
{{e}}
Parsed EDI
Element Separator: {{ediOut.elementSeparator}}
Segment Terminator: {{ediOut.segmentTerminatorDesc}}
Rows: {{ediOut.segments.length}}
{{propt}}
JSON
JSON
{{ediOut}}
hide
This tool is provided AS IS without any warranty. Check out the author at
http://brian-glick.com
.
Parsing is done in your browser so the file size limitations will be related to your computer. Nothing is sent to the server.


{% from 'bootstrap/form.html' import render_form %} {% extends 'common/base.html' %} {% block content %}
List of solved boards, check solutions for n*n queens resolved and execution time


AWS Lambda Function DeadLetterConfig
DeadLetterConfig
is a property of the AWS::Lambda::Function resource
that specifies a Dead Letter Queue (DLQ) that AWS Lambda (Lambda) sends events to
when it can't
process them. For example, you can send unprocessed events to an Amazon Simple Notification
Service (Amazon SNS) topic, where
you can take further action.
Syntax
JSON
{ "TargetArn" :
String
}
YAML
TargetArn:
String
Properties
TargetArn
-
The Amazon Resource Name (ARN) of a resource where Lambda delivers unprocessed events, such as an Amazon SNS topic or Amazon Simple Queue Service (Amazon SQS) queue. For the Lambda function execution role, you must explicitly provide the relevant permissions so that access to your DLQ resource is part of the execution role for your Lambda function.
Required: No
Type: String


{{title}}
Uz sākumu
Uzdevumi
Prasmes
Pārskati
Norādes
{% for item in nav_items %} {% if item.subdir == course %}
{{item.title}}
{% else %}
{{item.title}}
{% endif %} {% endfor %}
Reports on Baltic Olympiad problems
Task groups
Problems summarized by question type
Problems summarized by concepts used in their formulation


This page includes some JavaScript.
Open your Developer console to see the message.
-
In Chrome, click View > Developer > JavaScript Console
-
In Firefox, click Tools > Web Developer > Web Console
-
In Safari, click Safari > Preferences... > Security > Enable JavaScript then go to the Advanced tab and tick Show Develop Menu in Menu Bar then go to Develop > Show Error Console (you might want to consider using Firefox or Chrome).
-
In Microsoft Edge (which is basically Internet Explorer), press F12 and then CTRL+2 (again, you might want to use Firefox or Chrome).


Pants Daemon
The Pants Daemon (pantsd) is a system introduced to enable Pants to keep information about the build warm in memory between runs. It consists of a process running in the background (currently, one for each buildroot), which listens to filesystem events and keeps a build graph warm. It then passes that graph to subsequent runs that request it.
This document outlines all the moving pieces of pantsd, and explains how it works through an end-to-end run.
ProcessManager
ProcessManager
is a class designed to keep track of processes. Besides changing their state (paused, terminating...), it allows a process to fork in different ways. Classes that extend ProcessManager
can (and often do) inject code to be run before and after forking by overriding the functions pre_fork
, post_fork_child
, post_fork_parent
. An example of one of these functions is in NailgunExecutor
, where we start a Nailgun server that we can connect to, after forking the main Pants process.
The PantsDaemon
Class
The PantsDaemon
class is responsible for managing the lifetime of the pantsd process and the services associated with it. A PantsDaemon
is created with the inner class Factory
, and it has two modes of initialization:
- Stub initialization, which parses options, launches watchman, and not much else. This mode is used to determine whether it needs to fully initialize the daemon or not.
- Full initialization, which spawns the daemon process, initializes all the services, the legacy engine and the native code.
Initialization is encapsulated in the PantsDaemon.Factory.create()
method.
PantsDaemon
is a ProcessManager
, which means one can know if it's alive, or if it needs to restart.
PantsDaemon
s can be launch()
ed, which will terminate the process it was running, and call daemon_spawn()
to fork a new process. This new process will run the code in PantsDaemon.post_fork_child()
, which in short means it will run os.spawnve
to execute the pants_daemon.py:launch()
function, which will call PantsDaemon.run_sync()
. run_sync()
does a lot of things, but the vital things are calling _setup_services()
to spin up services, and _run_services()
to start an infinite loop polling them. More on services later.
Pailgun
The Nailgun Protocol is a protocol designed to allow clients to make command-line requests to a Nailgun Server. It supports an interface similar to Process
, except for it having no concern about making operations hermetic, and the Nailgun Protocol supports streaming access to stdin/stdout. Pailgun is an extension of the Nailgun Protocol, which is clients use to ask the Pants Daemon to spawn pants invocations.
The protocol is subject to change slightly in #6579.
In Pantsd, PailgunServer
is the class responsible for reading Pailgun requests and handling them, by spawning PailgunHandler
s in new threads.
Services
A Pants Daemon process has several services that it polls in order. Every service runs in a separate thread, and can be paused, resumed or terminated. Services can communicate with each other.
Examples of services are SchedulerService
, which takes care of listening responding to those events to keep a warm Graph
, and PailgunService
, which listens to SchedulerService
and manages the lifetime of a PailgunServer
responsible for spawning pants runs when requested by clients, it takes a DaemonPantsRunner
as one of its arguments, to use as a template to spawn pants runs when requested by the clients.
PailgunService
A PailgunService
is a PantsService
which spins up and polls a PailgunServer
.
A PailgunServer
is a TCPServer
with ThreadingMixIn
, which listens to Pailgun requests in a socket and spins up instances of PailgunHandler
s to handle them. It overrides ThreadingMixIn.process_request_thread()
to spin up one thread and one handler per request. A PailgunServer
holds a reference to the class DaemonPantsRunner
, which can be used to run pants from the server.
A PailgunHandler
is a class that parses the requests sent to the server, and uses DaemonPantsRunner
to invoke pants with the environment and arguments specified by the request.
A DaemonPantsRunner
implements a run()
method that creates an instance of LocalPantsRunner
, which will be used to run the requested pants command.
An end-to-end run with Pantsd
To understand what the process is for spinning up and closing down pantsd, here is what happens when we run pantsd for the first time:
If we run the command ./pants --enable-pantsd list src/scala::
, the following happens:
PantsRunner::run()
is called, which will prompt parsing of bootstrap options.--enable-pantsd
is a bootstrap option.-
In that function, we determine whether we need to run in pantsd mode or local mode. If we choose local mode, an instance of
LocalPantsRunner
is created and the run will continue as if pantsd didn't exist. -
Since
--enable-pantsd
was toggled on, we will create an instance ofRemotePantsRunner
, and run it.RemotePantsRunner
will: - Maybe launch pantsd, by calling
PantsDaemon.Factory.maybe_launch()
. This method will:- Create a stub instance of
PantsDaemon
. - Check if any of the fingerprinted options have changed by calling
ProcessManager.needs_restart()
. If they have (or there is no pantsd running at the moment), it will fully initialize an instance ofPantsDaemon
by callingPantsDaemon.Factory.create()
, and launch it withPantsDaemon.launch()
. In either case, it will return aPantsDaemon.Handle
to a process runningPantsDaemon.run_sync()
, which will poll all the services.
- Create a stub instance of
- With a handle to the pantsd process,
RemotePantsRunner
will now call_run_pants_with_retry()
, which will try to_connect_and_execute()
to the port supplied by the handle, probably more than once. To do that, it will create aNailgunClient
instance with will use the pailgun protocol described above to tell the pantsd process to invoke pants, with a call along the lines of:result = client.execute('./pants', *self._args, **modified_env)
-
After that request is finished, it will record the result and the local process will exit. But before that happens, this is what happens from the pantsd side:
-
The
PailgunService
will receive that request, and it will handle it as follows: PailgunService
is endlessly polling for requests via callingPailgunServer.handle_request()
.- When that method receives a request, it will call
SocketServer._handle_request_noblock()
, which will callThreadingMixIn.process_request()
(it would usually callSocketServer.process_request
, butPailgunServer
also extendsThreadingMixIn
, which intentionally overrides this function). ThreadingMixIn.process_request()
will spin up a newThread
and callPailgunServer.process_request_thread()
(it would usually callThreadingMixIn.process_request_thread()
, but we override it).- (note: we are now in a separate thread)
PailgunServer.process_request_thread()
will create an instance ofPailgunHandler
, and callPailgunHandler.handle_request()
. PailgunHandler.handle_request()
will create an instance ofDaemonPantsRunner
, and it willrun()
it. Creating an instance ofDaemonPantsRunner
withDaemonPantsRunner.create()
means that it will call theSchedulerService
to get a warm graph.-
DaemonPantsRunner
will create an instance ofLocalPantsRunner
with the graph (and options, and such) it got from theSchedulerService
, and run as if the daemon didn't exist. -
The
PailgunServer
will wait untilLocalPantsRunner
is finished inhandle_request
.


Pancreatitis is inflammation in the pancreas. The pancreas is a long, flat gland that sits tucked behind the stomach in the upper abdomen. The pancreas produces enzymes that help digestion and hormones that help regulate the way your body processes sugar (glucose).
Pancreatitis can occur as acute pancreatitis — meaning it appears suddenly and lasts for days. Or pancreatitis can occur as chronic pancreatitis, which is pancreatitis that occurs over many years.
Mild cases of pancreatitis may go away without treatment, but severe cases can cause life-threatening complications.
Tests and procedures used to diagnose pancreatitis include:
1. **Blood tests** to look for elevated levels of pancreatic enzymes
2. **Stool tests** in chronic pancreatitis to measure levels of fat that could suggest your digestive system isn't absorbing nutrients adequately
3. **Computerized tomography (CT) scan** to look for gallstones and assess the extent of pancreas inflammation
4. **Abdominal ultrasound** to look for gallstones and pancreas inflammation
5. **Endoscopic ultrasound** to look for inflammation and blockages in the pancreatic duct or bile duct
6. **Magnetic resonance imaging (MRI)** to look for abnormalities in the gallbladder, pancreas and ducts
Your doctor may recommend other tests, depending on your particular situation.
Treatment for acute pancreatitis will depend on whether it is mild or serious. In mild cases, the risk of complications is small. In serious cases, the risk is significant. Treatment for mild acute pancreatitis
Treatment aims to maintain bodily function and ease symptoms while the pancreas is repairing itself.
This will include:
1. **Painkillers**: Mild acute pancreatitis can be moderately or severely painful.
2. **Nasogastric tubes**: A tube may remove excess liquids and air as a treatment for nausea and vomiting.
3. **Bowel rest**: The gastrointestinal tract will need to rest for a few days, so the person will not take any food or drink by mouth until their condition improves.
4. **Preventing dehydration**: Dehydration often accompanies pancreatitis, and it can worsen the symptoms and complications. Fluid is often provided intravenously for the first 24-48 hours.
The person can usually go home after about 5 to 7 days. Treatment for severe acute pancreatitis
In severe acute pancreatitis, there is usually some tissue death, or necrosis. This increases the risk of sepsis, a severe bacterial infection that can affect the whole body. Sepsis can lead to multi-organ damage or failure.
Severe acute pancreatitis can also cause hypovolemic shock. Severe blood and fluid loss can leave the heart unable to pump enough blood to the body. Parts of the body can become rapidly oxygen-deprived. This is a life-threatening situation.
Treatment for this kind of pancreatitis includes:
1. Treatment in the intensive care unit (ICU): Injections with antibiotics aim to stop any infection from developing in the dead tissue.
2. Intravenous fluids: These help maintain hydration and prevent hypovolemic shock.
3. Breathing assistance: Ventilation equipment will help the patient breathe.
4. Feeding tubes: These provide nutrition as appropriate. In this case, early feeding improves outcomes.
5. Surgery: In some cases, the dead tissue may need to be surgically removed.
The patient will stay in ICU until they are no longer at risk of organ failure, hypovolemic shock, and sepsis. Treating gallstones
If gallstones caused the acute pancreatitis, the patient might undergo surgery or an endoscopic retrograde cholangiopancreatography (ERCP) after their condition improves.
After the gallstones are removed, the patient may be advised to follow a special diet to lower blood cholesterol, because excess cholesterol encourages the growth of gallstones.
The American Gastroenterological Association recommends surgery to remove the gallbladder of any patient who develops pancreatitis from gallstones. Treating alcohol misuse
If doctors determine that alcohol misuse was the underlying cause of the acute pancreatitis, the patient may be offered a treatment program for alcohol misuse.


Make symbolic links relative?
This is a NFSv2-specific option.
Converts absolute symbolic links seen by the client to relative links.
For example, if the directory /usr was exported, a link from
/usr/local/bin to /usr/X11R6/bin would be converted to
../X11R6/bin. This makes a lot more sense if the client is
mounting the directory somewhere else than /usr.
exportfs option: link_relative


Using services as dependencies for controllers is very similar to using services as dependencies for another service.
Since JavaScript is a dynamic language, DI can't figure out which services to inject by static
types (like in static typed languages). Therefore, you can specify the service name by using the
$inject
property, which is an array containing strings with names of services to be injected.
The name must match the corresponding service ID registered with angular. The order of the service
IDs matters: the order of the services in the array will be used when calling the factory function
with injected parameters. The names of parameters in factory function don't matter, but by
convention they match the service IDs, which has added benefits discussed below.
function myController($loc, $log) { this.firstMethod = function() { // use $location service $loc.setHash(); }; this.secondMethod = function() { // use $log service $log.info('...'); }; } // which services to inject ? myController.$inject = ['$location', '$log'];
A new feature of Angular DI allows it to determine the dependency from the name of the parameter.
Let's rewrite the above example to show the use of this implicit dependency injection of
$window
, $scope
, and our notify
service:
However, if you plan to minify your
code, your variable names will get renamed in which case you will still need to explicitly specify
dependencies with the $inject
property.
Understanding Angular Services Creating Angular Services Managing Service Dependencies Testing Angular Services


{% extends "base.html" %} {% block title %}Upload{% endblock %} {% block current %}(current){% endblock %} {% block content %}
Upload your file here
After you upload a file, your results will be shown here.


Sir Kristof Rodemai:
I judged wisely when I selected you. We are of equal caliber, and I'm sure we will become fast friends. Of course this is not to say it will always be so. For now, let's enjoy each other's company. Here, as promised, is the Alliance Manifesto.


{% extends "base.html" %} {% block app_content %}
Are you here as
Other items on the home page may include
A note on accessibility: Please note I will be implementing a universal design approach. I have selected a fully customizable CSS framework that was built with accessibility in mind. It is mobile first and includes many elements that are accessible "out of the box." I will also do a full audit on the page to make sure that it is in compliance with WCAG, Section 504, and ARIA standards. I hope that we will have contributors who are able to check AI translations of the site so that it can be offered in as many different languages as possible.
{% endblock %}


Delivery
All deliveries are included in the price of the book for books over £500. Otherwise the following rates apply:
| Up to 1kg | Over 1kg | Over 3kg | ||||
|---|---|---|---|---|---|---|
| Premium | Standard | Premium | Standard | Premium | Standard | |
| UK | £5.99 | £9.99 | £11.59 | £16.59 | £33.99 | £43.99 |
| Europe | £12.00 | £16.00 | £25.00 | £31.00 | £70.00 | £80.00 |
| USA / Canada | £14.99 | £22.99 | £27.00 | £32.00 | £68.00 | £91.00 |
| Rest of the World | £20.00 | £24.00 | £25.00 | £30.00 | £80.00 | £91.00 |
| Deliveries are undertaken where appropriate by specialist fragile and valuable goods handlers. All goods are sent first-class to both the UK and abroad. |
Up to 1KG:
Premium: £5.99
Standard: £9.99
Over 1KG:
Premium: £11.59
Standard: £16.59
Over 3KG:
Premium: £33.99
Standard: £43.59
Up to 1KG:
Premium: £12.00
Standard: £16.00
Over 1KG:
Premium: £25.00
Standard: £31.00
Over 3KG:
Premium: £70.00
Standard: £80.00
Up to 1KG:
Premium: £14.99
Standard: £22.99
Over 1KG:
Premium: £27.00
Standard: £32.00
Over 3KG:
Premium: £68.00
Standard: £78.00
Up to 1KG:
Premium: £20.00
Standard: £24.00
Over 1KG:
Premium: £25.00
Standard: £30.00
Over 3KG:
Premium: £80.00
Standard: £91.00
Estimated delivery times are as follows:
| Region | Delivery Time |
|---|---|
| UK | 1 to 2 days |
| Europe | 2 to 3 days |
| USA / Canada | 3 to 5 days |
| Rest of the World: | 5-14 Days |
| However, delivery times may differ if repair to books is requested before dispatch. |


One day after Los Angeles Mayor Eric Garcetti said he does not support a proposal backed by Black Lives Matter Los Angeles and other groups to make significant cuts to the Los Angeles Police Department, organizers of the campaign on Thursday defended their plan. “It’s not unexpected,” said Melina Abdullah, founding member of Black Lives Matter Los Angeles in response to Garcetti’s lack of support. “For sure, the People’s Budget is in direct opposition to his budget. He wants to spend the majority of his budget on police.”
The defunding campaign seeks to reinvest money taken from the police budget into communities of color through programs that provide needs such as affordable housing, jobs, and health care. Despite Garcetti’s dismissal of the Black Lives Matter proposal, which has become the bedrock for calls from protesters who have taken to the streets in recent weeks chanting “Defund the police!” at rallies, Abdullah said she and others do not plan on shifting strategy.
The freeway system displaced generations of people of color.When Angelenos gathered downtown to protest the murder of George Floyd, they started at City Hall and eventually made their way toward the 101. Pastor Stephen “Cue” Jn-Marie from the Row Church led the first group of protesters onto the freeway, which they occupied for roughly 30 minutes. Ever since the murder of Trayvon Martin in 2012, uprisings protesting police brutality and racism have blocked freeways throughout America. The freeway and highway systems in the U.S. are part of “a long, long, long history of looting our communities, looting our lives,” Pastor Cue explains.
Nowhere is this truer than in Los Angeles, where several generations of Angelenos, mainly people of color, have been displaced or trapped by the construction of freeways in the name of progress and ease of movement for white residents, many of whom moved outward to the suburbs of L.A. and Orange counties as the postwar era dawned. “Communities of color, or black folks, were not permitted to live in the suburbs through land covenants made between white homeowners, through racism, through redlining,” Pastor Cue says. “The whole narrative that black folks would bring down the value of the communities … that narrative is lingering in our society, even today.”
Fiona Apple has joined the ongoing protests in Los Angeles to support justice for George Floyd, who was murdered at the hands of four Minnesota police officers. One officer, Derek Chauvin, has been arrested and charged with third degree murder and second degree manslaughter, but the three others on the scene have been fired but not yet taken into custody.
 Arrest the other three!!!" Apple's sign reads as she's seen marching with other protesters in a video shared to Instagram. She also shouts "Black lives matter" while marching.
Rapsody is known for her lyricism and songs with a message. So when she stopped by The Breakfast Club, the Roc Nation artist decided to share her thoughts on JAY-Z's new partnership with the NFL. "I think it's dope," Rapsody said around the interview's 32-minute mark. "I think it's a great move because you got to make change from the inside."
While his partnership with the NFL raised eyebrows, Hov added fuel to the fire when he told the media that athletes should be "past kneeling" when it comes to addressing social issues. This comment received backlash from NFL players, Kenny Stills and Eric Reid, who have supported Kaepernick since the beginning of the protests. But during her response, Rapsody tried to add context to Jigga's statement. "[JAY-Z] said it perfectly," she continued. "If the issue why we were kneeling was to bring awareness to these issues than that's exactly what's happening. It's not about the kneeling... It's not about Kaepernick either. Kaepernick wanted to bring awareness but it's bigger than that. And if you're going to get Kaepernick in there's no better way than having JAY-Z sit at the table and figure this thing out."
American activist Tamika Mallory has demanded justice for George Floyd and black people at large at a rally in Minneapolis. Last week (May 29), Tamika Mallory, who co-chaired the Women's March in 2017, joined people protesting police brutality in the wake of George Floyd's murder at the hands of a white police officer.  Tamika said: "We are in a state of emergency. The reason why buildings are burning is not just for our brother, George Floyd. They’re burning down because people here in Minnesota are saying to people in New York, to people in California, to people in Memphis, to people all across this nation: Enough is enough…"


WITNESS LIST Environmental Regulation Committee March 4, 1997-2:00P HB 717 On: Williams, Barry (TNRCC) HB 1080 For: Erben, Andy (Tx. Assn. of Builders) Matthews, Ronnie (himself) Rep. Hilbert (himself) On: Miksa, Mary (TABCC) Williams, Barry (TNRCC) Registering, but not testifying: For: Anderson, Dwayne Sparky (Clean Water Action) James, Reggie (Consumers Union) HB 1131 For: Anderson, Dwayne Sparky (Clean Water Action) Culver, Ruth (East Tx. Comm. Network) Fields, Leslie (Sierra Club) James, Reggie (Consumers Union) Marsden, Julia M. (Leage of Women Voters) Scott, James (Public Citizen) Against: Fisher, Jon (Tx. Chemical Council) Miksa, Mary (TABCC) Terrell, James (Tx. Assn. of Dairymen) On: Collins, Thomas (himself) Lesniak, Chuck (City of Austin) McDaniel, Patricia J. (Tx. Crime Stoppers) Ray, Hal (Ofc. of Atty. General) Young, John (TNRCC) HB 1133 For: Lowerre, Richard (himself) Registering, but not testifying: For: Anderson, Sparky (Clean Water Action) James, Reggie (Consumers Union) Scott, James (Public Citizen) HB 1298 On: Boldue, David (TNRCC) HB 1423 For: Rep. Cuellar (himself)


XZDIFF
Section: XZ Utils (1)Updated: 2009-07-05
Index Return to Main Contents
NAME
xzcmp, xzdiff, lzcmp, lzdiff - compare compressed filesSYNOPSIS
xzcmp [cmp_options] file1 [file2]xzdiff [diff_options] file1 [file2]
lzcmp [cmp_options] file1 [file2]
lzdiff [diff_options] file1 [file2]
DESCRIPTION
xzcmp and xdiff invoke cmp(1) or diff(1) on files compressed with xz(1), lzma(1), gzip(1), or bzip2(1). All options specified are passed directly to cmp or diff. If only one file is specified, then the files compared are file1 (which must have a suffix of a supported compression format) and file1 from which the compression format suffix has been stripped. If two files are specified, then they are uncompressed if necessary and fed to cmp(1) or diff(1). The exit status from cmp or diff is preserved.The names lzcmp and lzdiff are provided for backward compatibility with LZMA Utils.
SEE ALSO
cmp(1), diff(1), xz(1), gzip(1), bzip2(1), zdiff(1)BUGS
Messages from the cmp(1) or diff(1) programs refer to temporary filenames instead of those specified.
Index
This document was created by man2html, using the manual pages.
Time: 05:29:12 GMT, December 24, 2015


0.95 Release “Enfant suisse”
As of Nov 19, 2015, the Pitivi team is proud to announce the fifth beta release of Pitivi toward the 1.0 version. This is mostly an incremental bugfixing release, so make sure to see the 0.91, 0.92, 0.93 and 0.94 release notes to get the full picture.
This is considered a beta release since the “big picture” remains “making Pitivi stable” (that's why the next release will bring proxy editing). Note that while we use the word “beta” here, this is the latest “stable” release, and is the one we recommend over all previous ones.
Pitivi works well for us and we make nice movies with it. Try it out, have fun and report detailed bugs for issues you may encounter!
Blog post associated with this release: http://jeff.ecchi.ca/blog/2015/11/19/pitivi-0-95-enfant-suisse/
Changes and completed tasks
82 tasks have been closed, See the list of reported tasks that have been resolved in 0.95.
Since the 0.94 release, 392 commits were made in Pitivi, fixing many bugs and implementing the following features:
The timeline has been rewritten
The timeline has been rewritten using plain GTK+. This means that we do not depend on the Clutter library anymore; it was causing many problems for our use cases.
The clip transformation box has been reimplemented
The transformation tool was previously dropped when Pitivi was ported to the GStreamer Editing Services. It has now been reimplemented. While its current state means that it lost a few features compared to its previous incarnation, it should be more robust and much simpler to maintain.
New video sink
The glimagesink (video rendering widget) was replaced by the new gtk(gl)sink, which integrates more cleanly inside the application and avoids various bugs we used to encounter while embedding the old sink into Gtk.
Direct importing to the timeline
It is now possible to import external files directly into the timeline. Just drag & drop from your favorite file manager to create a clip on the timeline.
Integration with GstValidate
With this new release, we serialize all the operations done by the user as GstValidateScenarios (more details here), allowing us to reproduce bugs much more easily. See the bug reporting page for details on how to create scenario files for testing.
Fits small screens again
We heard 1024x768 is still a thing, so we added some tricks to adapt the UI when running on small screens.
Requirements changes
- We dropped our dependency on Clutter
- We now depend on GStreamer 1.6
- We now depend on the new gtksink (from gst-plugins-bad 1.6)
Generally speaking, you can refer to the bottom of Pitivi's check.py for the dependencies' versions specific to a given release. See also dependencies for additional tips.
Known issues
- Some users might experience a playback performance regression with the new timeline. See ticket T3348 for details, to subscribe yourself or provide feedback for the investigation.
- The title editor UI is still quite primitive. Please join us to make it work up to your expectations! See the existing title editor bugs.
- Translations are not all fully up to date.
- The automatic clip aligner feature does not work. We need someone to port it to use our new audio waveforms processing module.
- No dialog to install missing codecs after discovering clips, and no error gets raised in that case. This means that the clip will “appear” to have imported correctly, but if you try inserting it into the timeline you may get errors in the background or Pitivi's UI may hang.
See the list of currently known issues
Contributors for this release
In Pitivi:
213 Thibault Saunier
100 Alexandru Băluț
18 Mathieu Duponchelle
17 Jean-François Fortin Tam
2 Lubosz Sarnecki
1 Luke Faraone
1 Wim Taymans
In GES (from 1.4.0 to 1.6.1):
244 Thibault Saunier
108 Mathieu Duponchelle
28 Tim-Philipp Müller
13 Justin Kim
8 Luis de Bethencourt
7 Sebastian Dröge
7 Stefan Sauer
4 Edward Hervey
2 Joris Valette
1 Jan Schmidt
1 Nicolas Dufresne
Translations:
bs Samir Ribic
ca Jordi Mas
cs Marek Černocký
de Christian Kirbach
es Daniel Mustieles
eu Inaki Larranaga Murgoitio
fi Jiri Grönroos
hu Balázs Úr, Gábor Kelemen
lt Aurimas Černius
pl Piotr Drąg
pt_BR Rafael Fontenelle
pt Pedro Albuquerque, Tiago S
sk Dušan Kazik
sr Мирослав Николић
sv Josef Andersson
zh_TW Cheng-Chia Tseng
The results of the search are


--- layout: post title: Pharsalus date: '2014-05-22T06:54:00+02:00' categories: - Storyboards - Concept Art picture_url: https://film-Storyboards.tumblr.com/post/86495499201 ---


The example audio files are (mostly) OGG, so you'll need Firefox, Chrome or Opera.
© 2016 Nick Freear | License: MIT. * http://maps.nls.uk/projects/api/


Dashboard
Analytics
Media
Comments
Widgets
Planner
Report
Directions
Welcome,
Ashley Wright
Logout
Dashboard
Recent Activity
See All


% inherit "layout.html" %> <% block title %>Index Title<% end %> This is body. The old title is <%r= await self.parent.blocks.title() %>.


I'm always searching for an energy boost, and found Vinpocetine interesting. I bought some at the health food store and took 10mg with no dramatic effect. So, I took another 10mg. After consuming about 60mg, I found my vision greatly improved, and my mind seemed much sharper.  So, I promptly went back to the store and bought 3 more bottles of 5mg capsules, 100 per bottle.
I think I was taking maybe 120mg a day for several months, and felt ok, but noticed a strange 'racing' of thoughts, and a weird anxiety. Seemed like the world was closing in on me. Then the really weird part. My chin took on a life of its own, and started trembling when I was in any situation where a confrontation was possible. There didn't have to be a confrontation, just the thought of it, and the way I was thinking, that was most of the time.
 It became very disconcerting to even be in public with my chin and lips trembling, and a big ol' hard on pulsing in my pants. Fuckin' weird. Especially since I'm a nurse and have to wear thin scrubs. I couldn't figure out the cause of the chin thing for a while, but it finally dawned on me that the Vinpocetine was causing it. I quit the stuff, and it took like 3 months for my chin to behave. But, being the maniac that I am, I started taking it again recently.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Multiple PDFs can be embedded inside a single HTML document. Note that this is not a recommended practice and may result in buggy behavior from Adobe Reader.
« Return to PDFObject home


Getting your microcontroller-based hardware projects online is in still many cases a battle between the ease of use of arduino’s I/O yet difficult to use wifi versus’s linux’s battle tested tcp stack yet difficult to use I/O. There are merits to all solutions, some of which simply include pairing a linux machine to handle networking to an arduino and having the two communicate over a USB connection using the Serial protocol.
The Arduino Yun is arduino’s first attempt to simply have the linux board shrunk down enough to fit onto the familiar arduino board. You can read more about it from them. It is a welcome answer to the Raspberry Pi and BeagleBone Black. There are TWO micropocessors on a single Yun board. One runs the Linino distribution of linux, which is a variant of OpenWRT. The other is the familiar arudino ATmega. There’s some baked-in ways to communicate between the two systems I haven’t had any time to play with yet.
My first mission was to try to get Node.js on the Lininuo computer running.
Configuring the Yun for WiFi was amazingly simple. On first boot, its starts up as an AP. You can log in to the network and configure it to connect to your own wifi.
Once you’re on the same network, you can ssh in with:
ssh<EMAIL_ADDRESS>If that works you’re on your way to running node on the Yun. From there I simply followed Giorgio Cefaro’s guide to use his node binaries.
After installation,
[csquared@autoM8 nodejs-linino]$ ssh<EMAIL_ADDRESS>root@Arduino:/tmp# opkg install uclibcxx_0.2.4-1_ar71xx.ipk
Installing uclibcxx (0.2.4-1) to root...
Configuring uclibcxx.
root@Arduino:/tmp# opkg install node_v0.10.17-2_ar71xx.ipk
Installing node (v0.10.17-2) to root...
Configuring node.
I wanted to confirm things were working:
root@Arduino:/tmp# node
> console.log("Hello, Arduino!");
Hello, Arduino!
undefined
Money.
Just for fun, I started up a web-server:
> vi http.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("Hello, Yun!\n");
}).listen(9615);
console.log("listening on 9615")
> root@Arduino:~# node http.js
listening on 9615
And from my laptop:
[csquared@autoM8]$ curl http://arduino.local:9615
Hello, Yun!
Ok, so Node works! Now how about npm? I figured I’d install my favorite logging library ;)
root@Arduino:~# npm install logfmt
-ash: npm: not found
Looks like I’ll have to wrap my head around @fibasile’s post and binaries if I want npm
.
For now, I can take the workaround and copy the files from my copy over with scp (this won’t work for anything that has extensions).
In the Arduino:
> root@Arduino:~# mkdir node_modules
From my laptop:
I just downloaded the zip of node-logfmt and scp’ed the unzipped directory over to the arduino because tar did not work right on the linino itself.
[csquared@autoM8]$ cd ~/Downloads/node-logfmt-master
[csquared@autoM8]$ npm install --production
[csquared@autoM8]$ scp -r ~/Downloads/node-logfmt-master root@arduino.local:~/node_modules/logfmt
I screwed up the first time and forgot to include the npm dependencies before I scp’ed the directory over. It would definitely be better to just “have” npm.
Anyways, after a quick rewrite of my HTTP server:
root@Arduino:~# vi http.js
var http = require('http');
var logfmt = require('../logfmt');
var HTTPhandler = function(req, res){
logfmt.requestLogger()(req,res,function(){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("Hello, Logfmt\n");
})
}
http.createServer(HTTPhandler).listen(3000)
console.log("listening on 3000")
root@Arduino:~# node http.js
And a cUrl request from my trusty laptop:
[csquared@autoM8 nodejs-linino]$ curl http://arduino.local:3000
Hello, Logfmt
I have a dirty hack to install dependencies!
root@Arduino:~# node http.js
listening on 3000
ip=<IP_ADDRESS> time=2013-12-14T21:18:22.982Z method=GET path= status=200 elapsed=99ms
Loglines! Success!
Next step, npm
.
@fibasile’s post and binaries mentions running node via:
node --stack_size=1024 --max_old_space_size=20 --max_new_space_size=2048 --max_executable_size=5 --gc_global --gc_interval=100
some informal benchmarking showed a drop in memory usage via the slick “advanced luci configuration panel” from 48% to 24%, so I’d highly recommend it.
c2


|
About:
|
- Lionel Messi (born 24 June 1987) is an Argentine professional footballer who plays as a forward for Spanish club Barcelona and the Argentine national team.
- Often considered the best player in the world and regarded by many as the greatest of all pricetime.
- Messi has a record-tying five Ballon d'Or awards, four of which he won consecutively, and a record five European Golden Shoes
|


Shiqing Yu
PersonI am now a research scientist at Facebook, Inc. I graduated in June 2020 with a PhD from the Statistics department in the Machine Learning and Big Data PhD Track at the University of Washington, Seattle. I graduated in 2015 from the University of Michigan, Ann Arbor, with a B.S. in Honors Mathematics and a minor in Computer Science. ResearchI worked with Professors Mathias Drton and Ali Shojaie on graphical models at the University of Washington, Seattle. For details please refer to this page. Teaching and ProgrammingFor details please refer to this page for my teaching and here for my programming. ContactOthers |


| Home | Libraries | People | FAQ | More |
Copyright © 2001-2004 Douglas Gregor
Use, modification and distribution is subject to the Boost
Software License, Version 1.0. (See accompanying file
LICENSE_1_0.txt
or copy at http://www.boost.org/LICENSE_1_0.txt)
Table of Contents
The Boost.Signals library is an implementation of a managed signals and slots system. Signals represent callbacks with multiple targets, and are also called publishers or events in similar systems. Signals are connected to some set of slots, which are callback receivers (also called event targets or subscribers), which are called when the signal is "emitted."
Boost.Signals 库实现了一个可控的信号插槽（signals and slots）系统。 信号代表了具有多个目标的回调， 在类似的系统中也称为发布者（publisher）或事件（event）。 信号与某组插槽相连接，插槽即回调的接收者 （也称为事件目标，event target，或订阅者，subscriber）， 它们在信号“发出”时被调用。
Signals and slots are managed, in that signals and slots (or, more properly, objects that occur as part of the slots) track all connections and are capable of automatically disconnecting signal/slot connections when either is destroyed. This enables the user to make signal/slot connections without expending a great effort to manage the lifetimes of those connections with regard to the lifetimes of all objects involved.
信号和插槽是可控的，因为信号和插槽（或严格地说是作为插槽出现的对象） 跟踪所有的连接，并能够在信号或插槽销毁时自动断开信号/插槽的连接。 这让使用者能够在建立信号/插槽连接的同时， 不必费力地根据相关对象的生命期去管理那些连接的生命期。
When signals are connected to multiple slots, there is a question regarding the relationship between the return values of the slots and the return value of the signals. Boost.Signals allows the user to specify the manner in which multiple return values are combined.
当信号连接多个插槽时，插槽的返回值和信号的返回值之间是什么关系呢？ 这是个问题。 Boost.Signals 允许用户合并多个返回值，并指定合并的方式。
Last revised: May 04, 2004 at 14:17:23 -0400 |
|
翻译：金庆 |
|
译文更新：2008.6.4 |


GSII sequences gene genes analyses synthetase Chloroplastida used using {border-style file phylogenetic px;} #ffffff;} HGT glutamine lineages sequence divergence Additional clade plants Bayesian enzymes eubacterial evidence Plant amino analysis early-diverging eukaryotic isoenzymes molecular plant RAxML chloroplast eukaryotes members sp. transit vascular acid evolution present proteins reinhardtii transfer tree Biol Mol Phylogenetic Pseudochlorella bootstrap green identified values (Figure Chlamydomonas Glutamine algae assimilation based duplication event evolved family genome higher obtained photosynthetic posterior px; trees {font-family Robertson cDNA carteri clock distribution early evolutionary font-size formed indicated major nitrogen protein represented support targeted taxa γ-Proteobacteria (GSII ./j.-...x Evol However, Sequences alignment arose characterized cytosolic double; endosymbiotic eubacteria lineages. marine mitochondrial multiple primary red relaxed sampling shown study terminal Chlorella Click DNA Evolutionary LINK N-terminal PCR Physiol Sci angiosperms border-color border-width chlorophytes distinct following function hypothesis localization manuscript. nagariensis node numbers origin peptides possibility primers prior prokaryotes rapid single solid; streptophytes supported {font-style {font-weight Acetabularia Alberte BEAST BMC Brown CCAP/A CCAP/A, Chloroplastida, Coruzzi Eubacteria Figure Forward Galdieria Green Inc., MYA Maximum Mesostigma Molecular Nature Nodes Phycol RACE Rev Reverse Table WAG accession additional algae, amplification analyses. bold bold. characterization copies courier; cytosol data described diatom em; encoding expressed highest horizontal indicate min, new nodes nuclear number observed oldest plants, plastid predicted presented provided pt;} reinhardtii, relationship sequencing subsequent suggesting sulphuraria timing


pixels.js
An image filtering library, with over 100 image filters for your websites & Node projects.
Installation
Browser
Include the following as a script in your website: https://cdn.jsdelivr.net/gh/silvia-odwyer/pixels.js/dist/Pixels.js
via jsDelivrPixels.JS In Action Try Out The Web App
Official PixelsJS Documentation
For complete PixelsJS documentation: https://pixelsjs.readthedocs.io/en/latest/
Usage
Pixels.js is compatible with both the browser and Node.JS, however usage varies depending on which you're using. Make sure to read the notes provided with each, and if you have any issues, you can contact me on Discord (Silvia923#9909) or open an issue on GitHub.
For Browser Use
HTML
<img src="image.PNG" id="img" />
JavaScript
// Select the image you wish to filter
var img = document.getElementById("img")
// First parameter is the image object, and the second is the filter you wish to apply.
img.onload = function() {
pixelsJS.filterImg(img, "twenties");
}
For Node
Usage for Node.JS varies slightly to the browser. Whereas in-browser Pixels.js automatically replaces the image on the webpage with the newly filtered one, in Node, your environment and canvas libraries can differ, so we've kept usage flexible for Node.
Simply get the image data of the image and pass it to the filterImgData function. The output will be the new image data. You can then place this new image data onto your canvas.
Example
This example uses node-canvas and get-image-data, two NPM modules that make canvas rendering easier, however, you can choose whatever libraries you like; this example merely illustrates using Pixels.js in tandem with node-canvas.
const get-image-data = require('get-image-data');
const pixelsJS = require("pixelsjs");
const Canvas = require('canvas')
var canvas = new Canvas(200, 200),
ctx = canvas.getContext('2d'),
get-image-data('./image.jpg', function(error, info) {
var imgData = info.data
let newImgData = pixelsJS.filterImgData(imgData, "solange");
ctx.putImageData(imgData, 0, 0);
})
Demo
Try Out The Web AppAll of the available photo filters are shown and demonstrated below. If you'd like to use a filter in your own projects, just include the name of the filter in the sample code shown above. The Original is the first image.
Filters Available
From electric, cyberpunk filters to pastel tinted filters and everything in between, Pixels.js has a filter to show your image's unique flair.
Vintage
From 1920s glamour to Parisian chic, from subtle violet tints to greyscale filters, vintage filters can help bring your photo back in time.
Retro
Faded hues, noisy filters, and glam tints encompass the retro filters on offer. We've got all the 1980s Retro Chic filters you've been looking for..
Cyberpunk
Electric effects and maximum noise dominate the cyberpunk filter collection.
Over 100 Image Filters At Your Disposal
Pixels.js comes with over 100 photo filters, spanning a variety of genres, from retro filters, to futuristic, cyberpunk effects. With only two lines of code, you can add any photo filter to your image.
See all filtersPixels.js is always improving and we're always adding new photo filters.
If you'd like to contribute, we're open-source, MIT-licensed, and always ready to accept pull requests.


One of my favorite games growing up is call of duty Blackkops 2 to be exact. I have always had an interest in shooting games that i could play with friends and others.I also like the custimization aspect of the game


Connect Share and Receive
MonkTrader let you enjoy Financial Movies for Free after you shared cool stuffs
Uhuh! Not A Serious Business Trip Once you have getting yourself ready trade and experience in gorgeous relaxing places in the world
I have been resigning for full-time job and work as a trader. However, I am also interested in web application and development skill so that it would benefit my financial analysis in the future
Below are lists of computer skills I've possessed from codeschool.com
Please twitter me as bizbew


Gorilla Tracking Safari (4 Days)
Bwindi Impenetrable National Park
Located in south-western Uganda, at the junction of the plain and mountain forests, Bwindi Park covers about 331 square Kilometers and is known for its exceptional biodiversity, with more than 160 species of trees and over 100 species of ferns. It houses half the number of Mountain Gorillas remaining in the whole world (380) and the only Park in the whole world where mountain gorillas co-exist with Chimps. Bwindi Impenetrable Forest Reserve was set up in 1942 and later on changed name to Bwindi Impenetrable National Park in 1992.In 1994; it was acknowledged as the world Heritage site.
Itinerary at a Glance:
Days |
Morning |
Afternoon |
01 |
Arrival |
Depending on time of arrival |
02 |
Transfer to BINP |
Equator /Lunch in Mbarara |
03 |
Gorilla Tracking |
Community walk |
04 |
Transfer Entebbe |
Departure |
Detailed Itinerary
Day 01: Arrival at Entebbe Airport and pick up. If time allows we visit Uganda Wildlife Education Centre.Dinner and ON Central inn HB.
Day 02: Entebbe – Bwindi Impenetrable National Depart from Kampala by road and head south-West to Bwindi Impenetrable National Park. Have a stopover for some informative talk and photographic opportunity at the Equator and then continue to Mbarara for Lunch. Travel through the rolling green hills through the highlands. Proceed to Bwindi Impenetrable Forest, home of the mountain gorillas and you will sleep to the sounds and sounds of the mountain rainforest. Dinner and O/N Kitandara tented Camp/Buhoma Community Rest Camp: Full Board basis.
Day 03: Gorilla Trekking Day
Early morning, have a hearty breakfast to give you the energy needed fortracking gorillas, a reasonable degree of fitness is required for the Experience. With your packed lunch, you will report to the ranger station for registration and a talk by one of the rangers Before 8:00 am. You will trek through thick creepers and undergrowth with your guides to find the Gorillas, which trek can take from half an hour to 9 hours. The steeply forested landscape is incredibly dense but crisscrossed by numerous animal trails allowing access to tourists. It’s amazing to sit, watch and photograph the gorillas in the forest among, listening to them marvel and grumble to each other. It is an extraordinary feeling being with these beautiful yet endangered Creatures. Return later in the evening. Dinner and O/N Kitandara tented Camp/Buhoma Community Rest Camp: Full Board basis.
Day 04: Departure
After an early morning breakfast, you will head back to Entebbe Lunch En-route. Site seeing on the way with stop over’s in local markets for fruits or depending on your flight schedule, you will proceed to Entebbe: Half Board basis.


| Field | Required | Type | Description |
|---|---|---|---|
distance |
required | TextValueObject |
Distance of the step. See TextValueObject for more information. |
duration |
required | TextValueObject |
Duration of the step. See TextValueObject for more information. |
end_location |
required | LatLngLiteral |
End location of the step. See LatLngLiteral for more information. |
html_instructions |
required | string |
HTML representation of the step. |
maneuver |
required | string |
Contains the action to take for the current step (turn left, merge, straight, etc.).
The allowed values include:
turn-slight-left ,
turn-sharp-left , turn-left ,
turn-slight-right , turn-sharp-right ,
uturn-left , uturn-right ,
turn-right , straight ,
ramp-left , ramp-right , merge ,
fork-left , fork-right , ferry ,
ferry-train , roundabout-left , and
roundabout-right
|
polyline |
required | DirectionsPolyline |
Polyline representation of the step. See DirectionsPolyline for more information. |
start_location |
required | LatLngLiteral |
Start location of the step. See LatLngLiteral for more information. |
travel_mode |
required | TravelMode |
Travel mode of the step. See TravelMode for more information. |
steps |
optional | DirectionsStep |
Substeps are only available when travel_mode is set to "transit". See DirectionsStep for more information. |
Generated from the OpenAPI specification. Edit Report bug