|
F´ Flight Software - C/C++ Documentation
NASA-v1.5.0
A framework for building embedded system applications to NASA flight quality standards.
|
ISF configuration file. More...
Go to the source code of this file.
Macros | |
| #define | FW_CONFIG_ERROR(condition, name) typedef char assert_failed_ ## name [ (condition) ? 1 : -1 ]; |
| #define | FW_HAS_64_BIT 1 |
| Architecture supports 64 bit integers. More... | |
| #define | FW_HAS_32_BIT 1 |
| Architecture supports 32 bit integers. More... | |
| #define | FW_HAS_16_BIT 1 |
| Architecture supports 16 bit integers. More... | |
| #define | FW_HAS_F64 1 |
| Architecture supports 64 bit floating point numbers. More... | |
| #define | FW_SERIALIZE_TRUE_VALUE (0xFF) |
| Value encoded during serialization for boolean true. More... | |
| #define | FW_SERIALIZE_FALSE_VALUE (0x00) |
| Value encoded during serialization for boolean false. More... | |
| #define | AssertArg U32 |
| #define | FwPacketDescriptorType U32 |
| Type representation for a packet descriptor. More... | |
| #define | FwOpcodeType U32 |
| Type representation for a command opcode. More... | |
| #define | FwChanIdType U32 |
| Type representation for a channel id. More... | |
| #define | FwEventIdType U32 |
| Type representation for a event id. More... | |
| #define | FwPrmIdType U32 |
| Type representation for a parameter id. More... | |
| #define | FwBuffSizeType U16 |
| Type representation for storing a buffer or string size. More... | |
| #define | FwEnumStoreType I32 |
| Type representation for an enumeration value. More... | |
| #define | FW_OBJECT_NAMES 1 |
| Indicates whether or not object names are stored (more memory, can be used for tracking objects) More... | |
| #define | FW_OPTIONAL_NAME(name) name |
| #define | FW_OBJECT_TO_STRING 1 |
| Indicates whether or not generated objects have toString() methods to dump internals (more code) More... | |
| #define | FW_OBJECT_REGISTRATION 1 |
| Indicates whether or not objects can register themselves (more code, more object tracking) More... | |
| #define | FW_QUEUE_REGISTRATION 1 |
| Indicates whether or not queue registration is used. More... | |
| #define | FW_BAREMETAL_SCHEDULER 0 |
| Indicates whether or not a baremetal scheduler should be used. Alternatively the Os scheduler is used. More... | |
| #define | FW_PORT_TRACING 1 |
| Indicates whether port calls are traced (more code, more visibility into execution) More... | |
| #define | FW_PORT_SERIALIZATION 1 |
| Indicates whether there is code in ports to serialize the call (more code, but ability to serialize calls for multi-note systems) More... | |
| #define | FW_SERIALIZATION_TYPE_ID 0 |
| Indicates if type id is stored when type is serialized. (More storage, but more type safety) More... | |
| #define | FW_NO_ASSERT 1 |
| Asserts turned off. More... | |
| #define | FW_FILEID_ASSERT 2 |
| File ID used - requires -DASSERT_FILE_ID=<somevalue> to be set on the compile command line. More... | |
| #define | FW_FILENAME_ASSERT 3 |
| Uses the file name in the assert - image stores filenames. More... | |
| #define | FW_ASSERT_LEVEL FW_FILENAME_ASSERT |
| Defines the type of assert used. More... | |
| #define | FW_ASSERT_TEXT_SIZE 120 |
| Size of string used to store assert description. More... | |
| #define | FW_OBJ_NAME_MAX_SIZE 80 |
| Size of object name (if object names enabled). AC Limits to 80, truncation occurs above 80. More... | |
| #define | FW_OBJ_TO_STRING_BUFFER_SIZE 255 |
| Size of string storing toString() text. More... | |
| #define | FW_OBJ_SIMPLE_REG_ENTRIES 500 |
| Number of objects stored in simple object registry. More... | |
| #define | FW_OBJ_SIMPLE_REG_BUFF_SIZE 255 |
| Size of ojbect registry dump string. More... | |
| #define | FW_QUEUE_SIMPLE_QUEUE_ENTRIES 100 |
| Number of queues stored in simple queue registry. More... | |
| #define | FW_QUEUE_NAME_MAX_SIZE 80 |
| Max size of message queue name. More... | |
| #define | FW_TASK_NAME_MAX_SIZE 80 |
| Max size of task name. More... | |
| #define | FW_COM_BUFFER_MAX_SIZE 128 |
| Max size of Fw::Com buffer. More... | |
| #define | FW_CMD_ARG_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwOpcodeType) - sizeof(FwPacketDescriptorType)) |
| #define | FW_CMD_STRING_MAX_SIZE 40 |
| Max character size of command string arguments. More... | |
| #define | FW_CMD_CHECK_RESIDUAL 1 |
| Check for leftover command bytes. More... | |
| #define | FW_LOG_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwEventIdType) - sizeof(FwPacketDescriptorType)) |
| #define | FW_LOG_STRING_MAX_SIZE 100 |
| Max size of log string parameter type. More... | |
| #define | FW_TLM_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwChanIdType) - sizeof(FwPacketDescriptorType)) |
| #define | FW_TLM_STRING_MAX_SIZE 40 |
| Max size of channelized telemetry string type. More... | |
| #define | FW_PARAM_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwPrmIdType) - sizeof(FwPacketDescriptorType)) |
| #define | FW_PARAM_STRING_MAX_SIZE 40 |
| Max size of parameter string type. More... | |
| #define | FW_FILE_BUFFER_MAX_SIZE 255 |
| Max size of file buffer (i.e. chunk of file) More... | |
| #define | FW_INTERNAL_INTERFACE_STRING_MAX_SIZE 256 |
| Max size of interface string parameter type. More... | |
| #define | FW_ENABLE_TEXT_LOGGING 1 |
| Indicates whether text logging is turned on. More... | |
| #define | FW_LOG_TEXT_BUFFER_SIZE 256 |
| Max size of string for text log message. More... | |
| #define | FW_SERIALIZABLE_TO_STRING 1 |
| Indicates if autocoded serializables have toString() methods. More... | |
| #define | FW_SERIALIZABLE_TO_STRING_BUFFER_SIZE 255 |
| Size of string to store toString() string output. More... | |
| #define | FW_ARRAY_TO_STRING 1 |
| Indicates if autocoded arrays have toString() methods. More... | |
| #define | FW_ARRAY_TO_STRING_BUFFER_SIZE 256 |
| Size of string to store toString() string output. More... | |
| #define | FW_AMPCS_COMPATIBLE 0 |
| Whether or not JPL AMPCS ground system support is enabled. More... | |
| #define | FwTimeBaseStoreType U16 |
| Storage conversion for time base in scripts/ground interface. More... | |
| #define | FwTimeContextStoreType U8 |
| Storage conversion for time context in scripts/ground interface. More... | |
| #define | FW_CONTEXT_DONT_CARE 0xFF |
| Don't care value for time contexts in sequences. More... | |
| #define | FW_USE_TIME_BASE 1 |
| Whether or not to use the time base. More... | |
| #define | FW_USE_TIME_CONTEXT 1 |
| Whether or not to serialize the time context. More... | |
Enumerations | |
| enum | TimeBase { TB_NONE, TB_PROC_TIME, TB_WORKSTATION_TIME, TB_DONT_CARE = 0xFFFF } |
ISF configuration file.
Definition in file FpConfig.hpp.
| #define AssertArg U32 |
Definition at line 51 of file FpConfig.hpp.
| #define FW_AMPCS_COMPATIBLE 0 |
Whether or not JPL AMPCS ground system support is enabled.
Definition at line 319 of file FpConfig.hpp.
| #define FW_ARRAY_TO_STRING 1 |
Indicates if autocoded arrays have toString() methods.
Definition at line 308 of file FpConfig.hpp.
| #define FW_ARRAY_TO_STRING_BUFFER_SIZE 256 |
Size of string to store toString() string output.
Definition at line 313 of file FpConfig.hpp.
| #define FW_ASSERT_LEVEL FW_FILENAME_ASSERT |
Defines the type of assert used.
Definition at line 165 of file FpConfig.hpp.
| #define FW_ASSERT_TEXT_SIZE 120 |
Size of string used to store assert description.
Definition at line 170 of file FpConfig.hpp.
| #define FW_BAREMETAL_SCHEDULER 0 |
Indicates whether or not a baremetal scheduler should be used. Alternatively the Os scheduler is used.
Definition at line 123 of file FpConfig.hpp.
| #define FW_CMD_ARG_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwOpcodeType) - sizeof(FwPacketDescriptorType)) |
Definition at line 226 of file FpConfig.hpp.
| #define FW_CMD_CHECK_RESIDUAL 1 |
Check for leftover command bytes.
Definition at line 241 of file FpConfig.hpp.
| #define FW_CMD_STRING_MAX_SIZE 40 |
Max character size of command string arguments.
Definition at line 231 of file FpConfig.hpp.
| #define FW_COM_BUFFER_MAX_SIZE 128 |
Max size of Fw::Com buffer.
Definition at line 220 of file FpConfig.hpp.
| #define FW_CONFIG_ERROR | ( | condition, | |
| name | |||
| ) | typedef char assert_failed_ ## name [ (condition) ? 1 : -1 ]; |
Definition at line 16 of file FpConfig.hpp.
| #define FW_CONTEXT_DONT_CARE 0xFF |
Don't care value for time contexts in sequences.
Definition at line 337 of file FpConfig.hpp.
| #define FW_ENABLE_TEXT_LOGGING 1 |
Indicates whether text logging is turned on.
Definition at line 286 of file FpConfig.hpp.
| #define FW_FILE_BUFFER_MAX_SIZE 255 |
Max size of file buffer (i.e. chunk of file)
Definition at line 276 of file FpConfig.hpp.
| #define FW_FILEID_ASSERT 2 |
File ID used - requires -DASSERT_FILE_ID=<somevalue> to be set on the compile command line.
Definition at line 161 of file FpConfig.hpp.
| #define FW_FILENAME_ASSERT 3 |
Uses the file name in the assert - image stores filenames.
Definition at line 162 of file FpConfig.hpp.
| #define FW_HAS_16_BIT 1 |
Architecture supports 16 bit integers.
Definition at line 33 of file FpConfig.hpp.
| #define FW_HAS_32_BIT 1 |
Architecture supports 32 bit integers.
Definition at line 29 of file FpConfig.hpp.
| #define FW_HAS_64_BIT 1 |
Architecture supports 64 bit integers.
Definition at line 25 of file FpConfig.hpp.
| #define FW_HAS_F64 1 |
Architecture supports 64 bit floating point numbers.
Definition at line 37 of file FpConfig.hpp.
| #define FW_INTERNAL_INTERFACE_STRING_MAX_SIZE 256 |
Max size of interface string parameter type.
Definition at line 281 of file FpConfig.hpp.
| #define FW_LOG_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwEventIdType) - sizeof(FwPacketDescriptorType)) |
Definition at line 246 of file FpConfig.hpp.
| #define FW_LOG_STRING_MAX_SIZE 100 |
Max size of log string parameter type.
Definition at line 251 of file FpConfig.hpp.
| #define FW_LOG_TEXT_BUFFER_SIZE 256 |
Max size of string for text log message.
Definition at line 291 of file FpConfig.hpp.
| #define FW_NO_ASSERT 1 |
Asserts turned off.
Definition at line 160 of file FpConfig.hpp.
| #define FW_OBJ_NAME_MAX_SIZE 80 |
Size of object name (if object names enabled). AC Limits to 80, truncation occurs above 80.
Definition at line 178 of file FpConfig.hpp.
| #define FW_OBJ_SIMPLE_REG_BUFF_SIZE 255 |
Size of ojbect registry dump string.
Definition at line 196 of file FpConfig.hpp.
| #define FW_OBJ_SIMPLE_REG_ENTRIES 500 |
Number of objects stored in simple object registry.
Definition at line 192 of file FpConfig.hpp.
| #define FW_OBJ_TO_STRING_BUFFER_SIZE 255 |
Size of string storing toString() text.
Definition at line 185 of file FpConfig.hpp.
| #define FW_OBJECT_NAMES 1 |
Indicates whether or not object names are stored (more memory, can be used for tracking objects)
Definition at line 91 of file FpConfig.hpp.
| #define FW_OBJECT_REGISTRATION 1 |
Indicates whether or not objects can register themselves (more code, more object tracking)
Definition at line 115 of file FpConfig.hpp.
| #define FW_OBJECT_TO_STRING 1 |
Indicates whether or not generated objects have toString() methods to dump internals (more code)
Definition at line 106 of file FpConfig.hpp.
| #define FW_OPTIONAL_NAME | ( | name | ) | name |
Definition at line 97 of file FpConfig.hpp.
| #define FW_PARAM_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwPrmIdType) - sizeof(FwPacketDescriptorType)) |
Definition at line 266 of file FpConfig.hpp.
| #define FW_PARAM_STRING_MAX_SIZE 40 |
Max size of parameter string type.
Definition at line 271 of file FpConfig.hpp.
| #define FW_PORT_SERIALIZATION 1 |
Indicates whether there is code in ports to serialize the call (more code, but ability to serialize calls for multi-note systems)
Definition at line 135 of file FpConfig.hpp.
| #define FW_PORT_TRACING 1 |
Indicates whether port calls are traced (more code, more visibility into execution)
Definition at line 130 of file FpConfig.hpp.
| #define FW_QUEUE_NAME_MAX_SIZE 80 |
Max size of message queue name.
Definition at line 210 of file FpConfig.hpp.
| #define FW_QUEUE_REGISTRATION 1 |
Indicates whether or not queue registration is used.
Definition at line 119 of file FpConfig.hpp.
| #define FW_QUEUE_SIMPLE_QUEUE_ENTRIES 100 |
Number of queues stored in simple queue registry.
Definition at line 203 of file FpConfig.hpp.
| #define FW_SERIALIZABLE_TO_STRING 1 |
Indicates if autocoded serializables have toString() methods.
Definition at line 297 of file FpConfig.hpp.
| #define FW_SERIALIZABLE_TO_STRING_BUFFER_SIZE 255 |
Size of string to store toString() string output.
Definition at line 302 of file FpConfig.hpp.
| #define FW_SERIALIZATION_TYPE_ID 0 |
Indicates if type id is stored when type is serialized. (More storage, but more type safety)
Definition at line 147 of file FpConfig.hpp.
| #define FW_SERIALIZE_FALSE_VALUE (0x00) |
Value encoded during serialization for boolean false.
Definition at line 47 of file FpConfig.hpp.
| #define FW_SERIALIZE_TRUE_VALUE (0xFF) |
Value encoded during serialization for boolean true.
Definition at line 43 of file FpConfig.hpp.
| #define FW_TASK_NAME_MAX_SIZE 80 |
Max size of task name.
Definition at line 215 of file FpConfig.hpp.
| #define FW_TLM_BUFFER_MAX_SIZE (FW_COM_BUFFER_MAX_SIZE - sizeof(FwChanIdType) - sizeof(FwPacketDescriptorType)) |
Definition at line 256 of file FpConfig.hpp.
| #define FW_TLM_STRING_MAX_SIZE 40 |
Max size of channelized telemetry string type.
Definition at line 261 of file FpConfig.hpp.
| #define FW_USE_TIME_BASE 1 |
Whether or not to use the time base.
Definition at line 344 of file FpConfig.hpp.
| #define FW_USE_TIME_CONTEXT 1 |
Whether or not to serialize the time context.
Definition at line 348 of file FpConfig.hpp.
| #define FwBuffSizeType U16 |
Type representation for storing a buffer or string size.
Definition at line 79 of file FpConfig.hpp.
| #define FwChanIdType U32 |
Type representation for a channel id.
Definition at line 66 of file FpConfig.hpp.
| #define FwEnumStoreType I32 |
Type representation for an enumeration value.
Definition at line 84 of file FpConfig.hpp.
| #define FwEventIdType U32 |
Type representation for a event id.
Definition at line 70 of file FpConfig.hpp.
| #define FwOpcodeType U32 |
Type representation for a command opcode.
Definition at line 62 of file FpConfig.hpp.
| #define FwPacketDescriptorType U32 |
Type representation for a packet descriptor.
Definition at line 58 of file FpConfig.hpp.
| #define FwPrmIdType U32 |
Type representation for a parameter id.
Definition at line 74 of file FpConfig.hpp.
| #define FwTimeBaseStoreType U16 |
Storage conversion for time base in scripts/ground interface.
Definition at line 332 of file FpConfig.hpp.
| #define FwTimeContextStoreType U8 |
Storage conversion for time context in scripts/ground interface.
Definition at line 336 of file FpConfig.hpp.
| enum TimeBase |
Definition at line 323 of file FpConfig.hpp.


coin parameters and all files needed for GUI support - jl777/coins
Please try to download/copy this file and put it in MM2 directory.(edited)
You may also remove the userhome arg from JSON, I think we will deprecate it soon.
tried same as komodod using -arg=VALUE and tried pointing it to the app data dir with MM2.json and these values lik a komod conf file MM2 doesn't parse the command line arguments passed in -arg=VALUE way. Please also make sure that MM2.json file contains the json, komodo conf format is ini so this won't be accepted by MM2.
daemonfox10-Jul-19 01:29 AM
without the userhome arg, where would the default directory be in Win10?
daemonfox10-Jul-19 01:37 AM
omg... disregard its just dumb Windows "start in" related crap... once I moved to actually be in the directory instead of just launching with full path, it started just fine.
As I can see userhome arg is not really used now and should be deprecated. It was used only for native mode, but as of now MM2 will look for daemon config (like komodo.conf) in user home directory by default.(edited)
daemonfox10-Jul-19 03:02 AM
Yes it appears my issue was working directory... oddly enough i can call mm2.exe help from any current directory in cmd... but to launch the actual running daemon in Win10 I had to cd to the folder with the coins file (which also held the binaries) and it launched just fine.
sindresorhus11-Jul-19 03:20 PM
@artem.pikulin Is support for ETH/ERC20 in Electrum mode in mm v2 planned?
sindresorhus11-Jul-19 03:31 PM
@artem.pikulin mmv1 had a kickstart endpoint. I assume that's not needed anymore? I noticed in mmv2 that when I quit during a swap, it automatically resumes when it's started again.
sindresorhus11-Jul-19 03:45 PM
@artem.pikulin In mmv2 there's a enable endpoint, but the inverse is missing. Any plans to add a disable endpoint? (This was there in mmv1)
Komodo Insight. View detailed information on all komodo transactions and block. {{ $root.title + $root.titleDetail }}
phm8711-Jul-19 09:55 PM
@ca333 I didn't suscribe yet to atomicDEX beta. The hardfork is in few days. Will have I the time to register after hardfork or is it more safe to register right now and try it after hardfork ?
1
(I began to read the API docs but I didn't register)
ca33311-Jul-19 10:20 PM
no problem @phm87 feel free to sign up whenever you can - the earlier you register the sooner you will be invited to the beta program.
artem.pikulin12-Jul-19 02:02 AM
@sindresorhus Hi!
Is support for ETH/ERC20 in Electrum mode in mm v2 planned? - as cipi explained electrum is not applicable to ETH/ERC20, and yes, there's no need for proxy tokens anymore.
mmv1 had a kickstart endpoint. I assume that's not needed anymore? I noticed in mmv2 that when I quit during a swap, it automatically resumes when it's started again. - yes, MM2 kickstarts swaps by itself upon restart, but it needs some help - coins should be enabled to continue the swaps, please call the https://developers.atomicdex.io/basic-docs/atomicdex/atomicdex-api.html#coins-needed-for-kick-start and enable the returned tickers asap on MM2 start.
Documentation for developers building on AtomicDEX
artem.pikulin12-Jul-19 02:13 AM
In mmv2 there's a enable endpoint, but the inverse is missing. Any plans to add a disable endpoint? (This was there in mmv1) - disabling a coin is possible, but will require some effort as we need to take account of following:
1. If there're ongoing swaps with coin the disable should be denied for sure.
2. If there're active orders using a coin, what should we do? Cancel them? Or deny disable till the orders explicitly canceled by user?
rainbro712-Jul-19 05:00 AM
Artem is pro
sindresorhus12-Jul-19 10:38 AM
yes, MM2 kickstarts swaps by itself upon restart, but it needs some help - coins should be enabled to continue the swaps, please call the
Thanks. Will do.
2. If there're active orders using a coin, what should we do? Cancel them? Or deny disable till the orders explicitly canceled by user?
I think the API should return an error explaining that there's an order in progress so the user needs to cancel that before disabling the coin.
Per discussion in Discord. disabling a coin is possible, but will require some effort as we need to take account of following: If there're ongoing swaps with coin the disable should be deni...
@artem.pikulin Is it possible to cancel a swap? I tried using the cancel_order endpoint using the swap UUID I got from my_recent_swaps, but I'm just getting an error:
Order with uuid 02744126-bf1b-431b-bbae-f0cf397b1ee6 is not found
I assume there's a difference between a swap UUID and order UUID? But how do I convert between the two?
I also noticed my_recent_swaps is missing a cancellable property to indicate whether it can be cancelled. my_orders has this property. Is this intentional or just forgotten?(edited)
artem.pikulin12-Jul-19 10:54 AM
Swap cancel is possible on some stages, it's possible to add RPC method to abort swap if it's not on critical stage, however it will require some effort and refactoring, I think it won't be implemented in near future.
It's not very hard to cancel it on the node, but to provide good UX we should also notify the other node that we canceled the ongoing swap, because if we don't have such notification the user might think that app doesn't work and then maybe even submit a bug report about failed swap. And this part is not easy because we don't have such canceled notifications between swap participants.(edited)
sindresorhus12-Jul-19 04:18 PM
@artem.pikulin Okey. So for what stages does cancel_order currently work? Does it work at all currently? I need to know what stages to disable the cancel button on a swap or if I need to just hide at all together for now.
artem.pikulin12-Jul-19 06:24 PM
@sindresorhus Hi, cancel_order works when cancellable == true, which actually means that order is not being matched right now. Please note also that swap is not order, it's different entity - the result of matching the order with another order. In your situation when you call buy/sell you create the TakerOrder that is getting matched and deleted immediately, created swap takes the uuid of the order (it will be changed in the future as current TakerOrder is always fill, but the goal is to allow multiple matches for TakerOrder).
Contribute to artemii235/developer-docs development by creating an account on GitHub.
To catch the cancellable == true with buy/sell you should create the order that is not matching to any existing in the orderbook, it will wait for 30 seconds and then it will be converted to MakerOrder.
Summary: when you call buy/sell following happens:
1. TakerOrder is created.
2. If order is matched and filled swap is created. Swap takes the uuid of the order. Order is deleted.
3. If order is not matched it can be cancelled. If it's not matched and not cancelled in 30 seconds it's converted to MakerOrder.(edited)
4. MakerOrder can be matched with several TakerOrders until it's filled. It might be not cancellable if it has unfinished match(es) - got matching TakerOrder, but swap is not started yet.(edited)
t0sma13-Jul-19 05:27 AM
@CHMEX Is there an update of Atomic swap stats with the launch of AtomicDex? (mm2.0) on dexstats.info ?
CHMEX13-Jul-19 05:36 AM
@t0sma To my knowledge mm2.0 does not provide an api atm to get the counts. It will be possible to show the orderbook and prices
t0sma14-Jul-19 11:40 AM
OK. Thanks
michelvankessel14-Jul-19 12:00 PM
Hello! I have a quick question and would like to know if someone knows the answer. I am from the Blackcoin community and we are listed on BarterDEX v1. We would like to know if we get listed on BarterDEX v2 or if we have to be added to the list (again). the community noticed BLK not being present on this list - https://www.atomicexplorer.com/#/coins
@artem.pikulin Thanks for elaborating. I don't think it's worth having a "Cancel" button in HyperDEX if it only works in such a narrow situation. I'll just hide the cancel buttons until https://github.com/artemii235/SuperNET/issues/463 is implemented at some point.
Currently, the cancel_order endpoint is not very useful as it only really works if you're a maker and only for the first 30 seconds. Swap cancel is possible on some stages, it's pos...
2. If order is matched and filled swap is created. Swap takes the uuid of the order. Order is deleted.
@artem.pikulin#0794 I think it's awkward that the order is deleted right after being matched. The current way everything works feels a bit inconsistent. It would be nicer if an "order" existed from you do a buy/sell order all the way until it's done, no matter what. Will that be the case when https://github.com/artemii235/SuperNET/issues/451 is fixed?
Just opening this so I can track when it's implemented. It's a bit tricky situation as of now, MM2 doesn't persist the order history yet, order_status returns the active ord...
if you want to correct them, read the readme to try and test it yourself by changing the parameters to the correct ones if they are wrong. if you get a working swap, you can make a pull request to the repository to be added
the AtomicDEX (beta) is a product from Komodo Platform, you'll need to talk to the platform team members to be added
like any other GUI such as HyperDEX or Chainswap
usually these GUIs use the coins repository for their coin parameters
michelvankessel14-Jul-19 03:00 PM
@jorian thank you!
jorian14-Jul-19 03:01 PM
sindresorhus14-Jul-19 03:13 PM
@artem.pikulin I'm confused how to now enable a ETH/ERC20-based coin. The docs only says how to enable ETH.
I have this for the enable endpoint:
{
method: 'enable',
coin: 'MYTH',
urls: [
'http://eth1.cipig.net:8555',
'http://eth2.cipig.net:8555',
'http://eth3.cipig.net:8555',
],
swap_contract_address: '0x8500AFc0bc5214728082163326C2FF0C73f4a871', // Swap smart contract on the ETH mainnet
mm2: 1
}
@sindresorhus the contract address is in the coins file: https://github.com/jl777/coins/blob/master/coins#L1260 (example for BAT)
every ERC20 coin on the ETH chain can be enabled with the same urls (eth1-3.cipig.net:8555)
I get an error when I try to enable this ETH/ERC20 token: coins.js (passed to mm2): { coin: 'MYTH', name: 'Unicoin', decimals: 18, etomic: '0x277ab4b9dde09a8...
cipi14-Jul-19 05:01 PM
you need to use 0x277AB4b9DDE09A8E710fd755deeB9d0d9532d047 as MYTH contract address (some chars are upper case)
They are in lowercase-only format, which means they're not checksummed, but mm2 requires checksummed smart contract addresses. For example: coins/coins Line 1052 in 4ecd07f "etomic...
cipi14-Jul-19 05:15 PM
wen need to test all the coins that worked with mm1 again with mm2... if they are working, they get the setting "mm2": 1 in the coins file, like in this PR: https://github.com/jl777/coins/commit/97fce4f0f15bed19cf705329985805574cfd59c6
if you find contract addressess that are not working, please make a PR to the above repo
@cipi I would argue this is unrelated. Testing all the coins is going to take forever. This can be fixed pretty easily. If there are lowercase addresses, they need to be changed to the checksummed one.
cipi14-Jul-19 05:38 PM
sure, but you need to test the coins anyway before using them in mm2
erc20 tokens can change contract address or move to own chain, or some are not working like in mm1, eg USDT... it needs to be tested
sindresorhus14-Jul-19 05:41 PM
@cipi I'll do a PR with the smart contract fixes tomorrow.
@artem.pikulin Why is the avevolume property of the orderbook endpoint marked as deprecated? It's a useful property we use in HyperDEX. Any chance it could be kept?


Hello! I am a software engineer, though my career started in architecture and urban design technology. The purpose of this site might just be to tinker. Here's my "real" (what is real?) site.
Outside of my day job in computers (hopefully making the web more approachable for all) I enjoy walking, trains, Old English etymology, art from the Dutch Golden age and 90s country music. I contain multitudes!
github/jlord — instagram/jlord — goodreads/jlord — twitter/jllord (Two l's, ugh, I know)


Enter a natural formatted date or a unix code date in the url and both the natural and unix code for that date will be returned.
An invalid date or format will return null
.
https://kiwilifter-timestamp-api.herokuapp.com/December 15, 2015
https://kiwilifter-timestamp-api.herokuapp.com/1450137600
{
"unix":<PHONE_NUMBER>,
"natural": "December 15, 2015"
}


Object
An ISO 3166 country. Can be used to get a list of Timezones for a country. For example:
us = Country.get('US') us.zone_identifiers us.zones us.zone_info
Loads a marshalled Country.
# File lib/tzinfo/country.rb, line 157 def self._load(data) Country.get(data) end
Returns an Array of all the defined Countries.
# File lib/tzinfo/country.rb, line 79 def self.all load_index Indexes::Countries.countries.keys.collect {|code| get(code)} end
Returns an Array of all the valid country codes.
# File lib/tzinfo/country.rb, line 73 def self.all_codes load_index Indexes::Countries.countries.keys end
Gets a Country by its ISO 3166 code. Raises an InvalidCountryCode exception if it couldn’t be found.
# File lib/tzinfo/country.rb, line 46 def self.get(identifier) instance = @@countries[identifier] unless instance load_index info = Indexes::Countries.countries[identifier] raise InvalidCountryCode.new, 'Invalid identifier' unless info instance = Country.new(info) @@countries[identifier] = instance end instance end
If identifier is a CountryInfo object, initializes the Country instance, otherwise calls get(identifier).
# File lib/tzinfo/country.rb, line 62 def self.new(identifier) if identifier.kind_of?(CountryInfo) instance = super() instance.send :setup, identifier instance else get(identifier) end end
Compare two Countries based on their code. Returns -1 if c is less than self, 0 if c is equal to self and +1 if c is greater than self.
# File lib/tzinfo/country.rb, line 136 def <=>(c) code <=> c.code end
Dumps this Country for marshalling.
# File lib/tzinfo/country.rb, line 152 def _dump(limit) code end
The ISO 3166 country code.
# File lib/tzinfo/country.rb, line 85 def code @info.code end
Returns true if and only if the code of c is equal to the code of this Country.
# File lib/tzinfo/country.rb, line 142 def eql?(c) self == c end
Returns a hash value for this Country.
# File lib/tzinfo/country.rb, line 147 def hash code.hash end
Returns internal object state as a programmer-readable string.
# File lib/tzinfo/country.rb, line 100 def inspect "#<#{self.class}<EMAIL_ADDRESS>end
The name of the country.
# File lib/tzinfo/country.rb, line 90 def name @info.name end
Alias for name.
# File lib/tzinfo/country.rb, line 95 def to_s name end
Returns a frozen array of all the zone identifiers for the country. These are in an order that
(1) makes some geographical sense, and (2) puts the most populous zones first, where that does not contradict (1).
# File lib/tzinfo/country.rb, line 108 def zone_identifiers @info.zone_identifiers end
Returns a frozen array of all the timezones for the for the country as CountryTimezone instances (containing extra information about each zone). These are in an order that
(1) makes some geographical sense, and (2) puts the most populous zones first, where that does not contradict (1).
# File lib/tzinfo/country.rb, line 130 def zone_info @info.zones end
An array of all the Timezones for this country. Returns TimezoneProxy objects to avoid the overhead of loading Timezone definitions until a conversion is actually required. The Timezones are returned in an order that
(1) makes some geographical sense, and (2) puts the most populous zones first, where that does not contradict (1).
# File lib/tzinfo/country.rb, line 119 def zones zone_identifiers.collect {|id| Timezone.get_proxy(id) } end
Generated with the Darkfish Rdoc Generator 2.


1
Filling information
2
Pay your protection bill
3
Success
Joining Inschain accidental mutual project
To ensure the authenticity of the project, we request all member to provide their personal information honestly. Your valid identity document will be your only proof and acknowledge that these information will not leak
*
name
please select the relationship with the insuree
*
- Applicant
- Spouse
- Parent
- Children
- Relatives
- Collegue
- Friends
- Other
relationship
please select the insuree gender
*
- male
- female
gender
*
birthday
please enter the nationality of the insuree
*
-
<%nation.forEach(function(v){%>
- <%-v.ename%> <%})%>
nationality
*
identity number
email
mobile
Next
Next
Return and modified
In order to particpate in this project, you must read it carefully and agree the following commitments. if the applicant had any following conditions,they are not eligible to join the project. If the applicant fails to truthfully inform any one of condition, inschain mutual platform will not responsibleto provide mutual assitance fund for any future accidents.


00:00:00 01/01/1970 UTC
Device ID:
0000000000000000
Firmware description:
-
Firmware version:
0.0.0
Battery:
0.0V
Set Time


{% extends "/email/email_base.html" %} {% block page_content %}
A new preview code request has been received with the following email address:
{{ email }}


Mar974.com is an easy to use, open source and completely free file upload service. We accept your files, photos, documents, anything, and give you back a shareable link for you to send to others.
Will you keep my files forever?
Unless we receive a copyright complain or some other bullshit, we will.
Or unless my hard disk die like the previous one.
How can I keep track of my uploads?
Simply create a user on the site and every upload will be associated with your account, granting you access to your uploaded files through our dashboard.
What are albums?
Albums are a simple way of sorting uploads together. You can create albums through the dashboard and use them with the Chrome extension or the Firefox extension which will enable you to right click -> send to lolisafe or to a desired album if you have any.


According to a French study, Y-generation loose 152 days per year (meaning 32 years in a life!) procrastinating online.
With this extension, blacklist website you want to limit time spent on and get alerted when time is over!
This extension is open-source and you're free to contribute to source-code available here!
It's not mine, it's yours!


Useful Resources
Inspiration
Sudoku
Electronics
Programming - Testing and Practice
Business
Programming - C#
Programming - General
Programming - Web Development
Material UI Components
Programming - Python
alembic for sqlalchemy migrations
Microsoft Graph
Graph API
Graph Explorer
Security


Jest allows you to mock out whole modules in your tests, which can be useful for testing your code is calling functions from that module correctly. However, sometimes you may want to use parts of a mocked module in your test file, in which case you want to access the original implementation, rather than a mocked version.
Consider writing a test case for this createUser
function:
// createUser.js
import fetch from 'node-fetch';
export const createUser = async () => {
const response = await fetch('http://website.com/users', {method: 'POST'});
const userId = await response.text();
return userId;
};
Your test will want to mock the fetch
function so that we can
be sure that it gets called without actually making the network request.
However, you’ll also need to mock the return value of
fetch
with a Response
(wrapped in a
Promise
), as our function uses it to grab the created user’s
ID. So you might initially try writing a test like this:
jest.mock('node-fetch');
import fetch, {Response} from 'node-fetch';
import {createUser} from './createUser';
test('createUser calls fetch with the right args and returns the user id', async () => {
fetch.mockReturnValue(Promise.resolve(new Response('4')));
const userId = await createUser();
expect(fetch).toHaveBeenCalledTimes(1);
expect(fetch).toHaveBeenCalledWith('http://website.com/users', {
method: 'POST',
});
expect(userId).toBe('4');
});
However, if you ran that test you would find that the
createUser
function would fail, throwing the error:
TypeError: response.text is not a function
. This is because
the Response
class you’ve imported from
node-fetch
has been mocked (due to the
jest.mock
call at the top of the test file) so it no longer
behaves the way it should.
To get around problems like this, Jest provides the
jest.requireActual
helper. To make the above test work, make
the following change to the imports in the test file:
// AFTER
jest.mock('node-fetch');
import fetch from 'node-fetch';
const {Response} = jest.requireActual('node-fetch');
This allows your test file to import the actual
Response
object from node-fetch
, rather than a
mocked version. This means the test will now pass correctly.


Author: Katy Chamberlin
Publish date: Apr 6, 2009
Summary: Air is a key element for optimum health! Try some tips for increasing your lung capacity.
In order to have good blood, we must breathe well. Full, deep inspirations of pure air, which fill the lungs with oxygen, purify the blood. They impart to it a bright color and send it, a life-giving current, to every part of the body. A good respiration soothes the nerves; it stimulates the appetite and renders digestion more perfect; and it induces sound, refreshing sleep.
Air is the most vital element for humans and animals. We could survive for weeks without food, or days without water, but deprived of air, we would perish within minutes.
The human body must have oxygen; each of its 100 trillion cells must receive steady, fresh supplies to survive. Every day, you take more than 17,000 breaths to keep your body fueled. The heart sends blood to the lungs where it drops off carbon dioxide for elimination and picks up fresh oxygen for delivery to every cell in the body.
Fresh air has many health benefits. It improves the brain's ability to function, gives clarity to the mind, improves concentration, and boosts learning abilities. It gives a sense of happiness and well-being by altering brain levels of serotonin. It promotes quality sleep, and kills bacteria and viruses in the air.
Pollution causes air to lose these capabilities.
Open the windows or set heating and air conditioning units to bring in fresh air.  Keep proper ventilation in mind wherever you are. Avoid car exhaust, tobacco smoke, and stuffy ill-ventilated rooms.
Take several deep breaths to clear your mind and increase your energy level:
A good workout forces you to breathe deeply and speeds up the circulation of oxygen-rich blood throughout the body; this saturates each cell with oxygen.
The way we stand and sit affects the amount of air the lungs can hold. When we sit up straight and walk tall, we allow them to enlarge and work at full capacity. When we habitually stoop or slouch it is impossible to breathe deeply. Superficial breathing soon becomes a habit and the lungs lose their power to expand and receive a sufficient supply of oxygen.
What we wear affects the amount of oxygen available for our use. Loose comfortable clothing allows the lungs freedom to inflate; tight, constrictive clothing around the abdomen tends to restrict breathing.
From the rainforest to the city park to the home, plants serve the very important function of recycling the atmosphere. They absorb carbon dioxide from the air and produce oxygen for us to breathe. Some provide the added advantage of removing toxic pollutant from the air.
Fresh air has a different chemical makeup from the indoor air most of us breathe; it is ionized or electrically charge, which is the primary reason for its multitude of health advantages. This air is produced in natural settings, around trees and moving water, in sunlight, and after thunderstorms.
Fresh country air soothes the nerves, stimulates the appetite, and induces sound, refreshing sleep.
Whenever possible, exercise outdoors and in the morning, when the air is cleanest. Most people use less than half of their lung capacity. T hey are not getting all the potential benefits from the air they breathe.
This article was originally published on AmazingHealth website.
Disclaimer: This article is provided by a third-party source. Providing a third-party article on healthyprogrammer.com indicates that we stand behind the content of that particular article, but it is not an endorsement by healthyprogrammer.com of the author's opinion, lifestyle or work published elsewhere.
This information provides a general overview and may not apply to everyone. Talk to your family doctor to find out if this information applies to you and to get more information on this subject.
Copyright © 2020 | Designed by Kelvin otundo


Provides easy access to most common WebRpc-Response values.
More...
Provides easy access to most common WebRpc-Response values.
See method PhotonNetwork.WebRpc.
Instantiate as new WebRpcResponse(operationResponse) for operationResponse.OperationCode == OperationCode.WebRpc.
| WebRpcResponse.WebRpcResponse |
( |
OperationResponse |
response | ) |
|
| string WebRpcResponse.ToStringFull |
( |
| ) |
|
| string WebRpcResponse.DebugMessage |
|
get |
| string WebRpcResponse.Name |
|
get |
| Dictionary<string, object> WebRpcResponse.Parameters |
|
get |
| int WebRpcResponse.ReturnCode |
|
get |
-1 tells you: Got not ReturnCode from WebRpc service.
The documentation for this class was generated from the following file:
- D:/work/LittleHeroes_Game/Assets/Photon Unity Networking/Plugins/PhotonNetwork/PhotonClasses.cs


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/Type.20class.20failure.html ---
What's failing here?
import ring_theory.noetherian ring_theory.principal_ideal_domain example {K : Type*} [discrete_field K] : is_noetherian_ring K := by apply_instance --works example {K : Type*} [discrete_field K] : is_noetherian K K := by apply_instance --fails
The [fintype M]
argument to ring.is_noetherian_of_fintype
should be the first instance argument.
Thanks.
I've put your PR on the merge queue. It's sad that this kind of hackery is needed...
I still don't understand how to debug these kinds of things.
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Protest-hit Iran slams US show of support for 'rioters'
TEHRAN: Iran has slammed a US show of support for "rioters," after violent protests sparked by a decision to impose petrol price hikes and rationing in the sanctions-hit country.
Major roads have been blocked, banks torched and public buildings attacked in the nationwide unrest that has left at least two dead - a civilian and a policeman.
Footage of the violence showing masked young men on debris-strewn streets setting buildings ablaze has been aired on state television, which rarely shows any signs of dissent in the country.
Demonstrations broke out on Friday, after it was announced that the price of petrol would be raised by 50 per cent for the first 60 litres and 200 per cent for any extra fuel after that each month.
READ: Iran leader backs petrol price hike that sparked protests
The authorities in the Islamic republic say they have arrested more than 200 people and restricted internet access.
The situation on the streets was unclear on Monday morning, largely due to the internet outage that has stemmed the flow of videos shared on social media of protests or associated acts of violence.
Iran's economy has been battered since May last year when President Donald Trump unilaterally withdrew the US from a 2015 nuclear agreement and reimposed crippling sanctions.
'LETHAL FORCE'
The United States on Sunday condemned Iran for using "lethal force" against demonstrators.
"The United States supports the Iranian people in their peaceful protests against the regime that is supposed to lead them," White House press secretary Stephanie Grisham said in a statement.
"We condemn the lethal force and severe communications restrictions used against demonstrators."
Iran's foreign ministry slammed US Secretary of State Mike Pompeo after he tweeted "the United States is with you" on Saturday in response to the demonstrations.
In a statement issued late Sunday, the ministry said it was reacting to Pompeo's "expression of support ... for a group of rioters in some cities of Iran and condemned such support and interventionist remarks".
"The dignified people of Iran know well that such hypocritical remarks do not carry any honest sympathy," Mousavi was quoted as saying.
"The acts of a rioter and saboteur group supported by the likes of (Pompeo) have no congruity with the conduct of the wise Iranian people."
READ: Rouhani warns protest-hit Iran cannot allow 'insecurity'
The statement blasted Washington's "ill-intent" over its decision to reimpose sanctions on Tehran after withdrawing from the nuclear deal.
"It's curious that the sympathising is being done with the people who are under the pressure of America's economic terrorism," Mousavi said.
WELFARE PAYMENT
Iran announced the surprise decision to impose petrol price hikes and rationing at midnight Thursday to Friday, saying the move was aimed at helping the needy with cash handouts.
The plan agreed by the High Council of Economic Coordination made up of the president, parliament speaker and judiciary chief comes at a sensitive time ahead of February parliamentary elections.
It won support on Sunday from Iran's supreme leader Ayatollah Ali Khamenei.
"I am not an expert and there are different opinions but I had said that if the heads of the three branches make a decision I will support it," he said in a speech aired on state television.
Khamenei blamed "hooligans" for damaging property and said "all the centres of the world's wickedness against us have cheered" the street protests.
President Hassan Rouhani on Sunday defended the controversial petrol price hike whose proceeds are to be used to make welfare payments to 60 million Iranians.
In remarks after a cabinet meeting, Rouhani also announced the first payments would be made to 20 million people on Monday evening.
"I order the Planning and Budget Organisation to start from tomorrow to pay people the sum needed to be paid to them," he said, as quoted by his official website.
But he also warned that Iran could not allow "insecurity".
"Protesting is the people's right, but protesting is different from rioting. We should not allow insecurity in the society," said Rouhani.
The intelligence ministry said at the weekend that it has identified those behind the unrest and that measures would be taken against them.
Forty people have already been arrested in the central city of Yazd, the semi-official ISNA news agency reported on Sunday.
Another 180 people were arrested in the past three days in the southern province of Khuzestan, state news agency IRNA said on Monday.
Fars news agency, which is close to Iran's Revolutionary Guards, said was unclear when the internet restrictions would be lifted, citing an informed government source.


CS 334 - Machine Learning
Course Overview
Machine learning impacts many applications including the sciences (e.g., predicting genome-protein interactions, detecting tumors, personalized medicine) and consumer products (e.g., Amazon’s Alexa, Microsoft Kinect, Netflix). In this course, students will cover the underpinnings, algorithms, and practices that enable a computer to learn. Emphasis will be on fundamental theory and algorithms in statistical machine learning, and approaches to applying machine learning in a variety of domains. Students will also obtain practical experience applying standard machine learning methods to solve a variety of problems.
Prerequisites
- CS 170/171/224/253
- MATH 221
Learning Outcomes
Upon successful completion of this course, students will be able to:
- Understand the basic building blocks and general principles that underlie machine learning algorithms;
- Be familiar with specific, widely used machine learning algorithms;
- Learn methodology and tools to apply machine learning algorithms to real data and evaluate their effectiveness and performance.
Textbook
- Required (R) : An Introduction to Statistical Machine Learning, by Gareth James, Daniela Witten, Trevor Hastie, and Robert Tibshirani.
- Supplemental (S1): A Course in Machine Learning, by Hal Daumé III
- Supplemental (S2): A First Encounter with Machine Learning, by Max Welling
- Supplemental (S3): The Elements of Statistical Learning: Data Mining, Inference, and Prediction, by Trevor Hastie, Robert Tibshirani & Jerome Friedman
- Supplemental (S4): Understanding Machine Learning:From Theory to Algorithms, by Shai Shalev-Shwartz & Shai Ben-David
Course Schedule (Tentative)
The reading material listed below is optional and the lecture plan may deviate over the course of the semester.
| # | Date | Topic | References |
|---|---|---|---|
| 1 | 8/28 | Introduction + Course Logistics | R: Ch. 1 S2: Ch. 1 |
| 2 | 9/4 | Supervised Learning + K-Nearest Neighbors | R: Ch. 2.1-2.1.2, 2.1.4 S1: Ch. 3 S2: Ch. 5 |
| H1 | 9/4 | Homework 1 Out 9/4. Due 9/18. | |
| 3 | 9/9 | Decision Tree | R: Ch. 8.1.2 S1: Ch. 1 |
| 4 | 9/11 | Model Assessment | R: Ch. 5.1 S1: Ch. 5.5 |
| 5 | 9/16 | Model Selection | R: Ch. 5.2 S1: Ch. 5.6 |
| 6 | 9/18 | Model Selection + Linear Algebra Review |
CS229 Linear Review Math4ML |
| H2 | 9/18 | Homework 2 Out 9/18. Due 9/30. | |
| 7 | 9/23 | Linear Regression | R: Ch. 3 Ch. 17.1 - 17.2 (Barber) UT’s MLR Slides |
| 8 | 9/25 | (Stochastic) Gradient Descent |
S1: Ch. 7.4 S1: Ch. 14.2 |
| 9 | 9/30 | Linear Regression (Part II) | |
| H3 | 9/30 | Homework 3 Out 9/30. Due 10/9. | |
| 10 | 10/2 | Dimensionality Reduction | R: Ch. 6.1-6.3 |
| 11 | 10/7 | Dimensionality Reduction (Part II) | R: Ch. 10.1-10.2 Stanford PCA notes |
| 12 | 10/9 | Naive Bayes | S2: Ch. 6 |
| 13 | 10/16 | Logistic Regression + Catchup | R: Ch. 4.3 |
| P1 | 10/16 | Project Proposal Due | |
| E1 | 10/21 | In-Class Midterm | |
| 15 | 10/23 | Perceptron |
S1: Ch. 4 S2: Ch. 6 |
| H4 | 10/23 | Homework 4 Out 10/23. Due 11/4. | |
| P2 | 10/27 | Spotlight Slides Due | |
| 16 | 10/28 | Project Madness | |
| 17 | 10/30 | Practical ML Advice | |
| 18 | 11/4 | Bagging + Random Forest | R: Ch. 8.2.1-8.2.2 |
| H5 | 11/4 | Homework 5 Out 11/4. Due 11/15. | |
| 19 | 11/6 | Gradient Boosting | R: Ch. 8.2.3 S1: Ch. 13.2 Ruder’s blogpost |
| 20 | 11/11 | Ensembles | S1: Ch. 13.1 |
| 21 | 11/13 | Bias + Variance Tradeoff | R: Ch. 2.2.2 S3: Ch. 9.2 S4: Ch.5 Fortmann-Roe’s notes |
| 21 | 11/18 | Support Vector Machine | R: Ch. 9 S1: Ch. 11.5 S2: Ch. 8-9 Stanford SVM notes NYU SVM notes |
| 22 | 11/20 | Neural Network |
S1: Ch 10 S2: Ch. 11 Nielsen: Ch. 1-3 S4: Ch. 20.1 - 20.3 |
| 23 | 11/25 | Neural Network II | |
| 24 | 11/27 | Deep Learning | |
| P3 | 12/2 | Project Presentations | |
| P3 | 12/4 | Project Presentations | |
| P3 | 12/9 | Project Presentations | |
| P4 | 12/13 | Final Project Report Due | |
| E2 | 12/17 | Final Exam |
Course Logistics
Contact and Communication
Piazza is the forum for the class. Make sure you check it on a regular basis.
- All official announcements, assignment clarifications, slide corrections, and any other communications will happen here.
- Any questions regarding the course should be posted on Piazza. You are strongly encouraged to answer other students’ questions when you know the answer. Do not ask or answer questions that are exactly a homework question.
- For longer discussions or to get help in person, please attend office hours.
- If there are private matters specific to you (e.g special accommodations, requesting alternative arrangements, etc.) or confidential matters you want to report, please email with subject heading starting with the term “CS334-F19”.
Office Hours
- Joyce Ho: M 1:00-3:00PM; W 9:00AM-11:00AM @MSC W302M
Course Grading
The final grade will be determined by a weighted average of all the graded items. Final grades may be curved up so that the class mean falls at least in a B range. The class median, mean, and standard deviation will be announced for each assignment and exam so that you have an idea of where you stand. The participation element consists of Piazza surveys, bi-weekly Canvas quizzes, and in-class discussion. Active participation in the class (i.e., answering questions and constructive contributions on Piazza, attendence and involvement in lectures, and office hours) may earn you one higher letter grade (e.g B+ becomes A-) at the discretion of the instructor. The precise requirements is intentionally vaguely specified.
| Component | Weight |
|---|---|
| Homeworks | 35% |
| Midterm | 15% |
| Project | 25% |
| Final | 20% |
| Participation | 5% |
Homework and Exam Policy
- Homework
- Homeworks are due electronically on Canvas and Gradescope at 11:59 PM ET.
- Each student receives six 24-hour “late days” that can be used on any of the 5 homeworks throughout the semester. No more than 3 late days may be used on any single homework.
- Use your late days wisely, no more late days remaining means you will receive zero credit for any late homework.
- Additional extensions on homework will be granted with appropriate documentation from the Office of Undergraduate Education (OUE).
- Exam
- The midterm (10 double-sided cheat sheets, no electronic devices) must be taken at the required time.
- Rescheduling the midterm is not permitted except in emergencies with appropriate documentation from OUE.
- The final will be on 12/17 3:00 P.M - 5:30 P.M and cannot be rescheduled under any circumstance.
Honor Code
All class work is governed by the College Honor Code and the Department Statement of Policy on Computer Assignments. While we encourage you to discuss assignments with other students (e.g., high-level discussion, getting hints or debugging help, talking about problem-solving strategies, and discussing ideas together), any code and writeups must be written by yourself. It is not okay to share code or write code collaboratively (this includes posting and/or sharing your code publicly). If you have collaborated with any other students, you must acknowledge the classmates in a comment on the top of your homework.
The internet is also a useful resource for learning. While it is okay to look at resources for the broad topic (e.g., how decision trees work), it is not okay to look for solutions to a specific homework problem (e.g., how to implement decision tree in Python). If you are unsure whether something is allowed, ask. You must cite all online sources used while working on homework and final projects. It is always your responsibility to learn if a source is allowed.
Apparent copies from any source, including your colleagues and internet sites, will be referred to the Emory Honor Council.  Your_Name_Here */
Accommodations
The Department of Computer Science at Emory supports equal access for students with disabilities. Any students needing special accommodations due to a disability should contact the Office of Accessibility Services (OAS) and appropriate arrangements will be made.
If you are a student that is currently registered with OAS and have not received a copy of your accommodation notification letter within the first week of class, please notify OAS immediately. Students who have accommodations in place are encouraged to contact the instructor during the first week of the semester, to communicate your specific needs for the course as it relates to your approved accommodations. All discussions with OAS and faculty concerning the nature of your disability remain confidential.
Python
Programming questions in the homework will use Python 3.7.
Running Python
There are three different ways to invoke / launch Python.
-
Interactive command-line Python. This launches an interactive session where you can type commands that execute interactively, similar to R or MATLAB. This is also a good way to determine which version of python is on your system.
$ python
-
Execute a Python program from the command-line. For example, run all the contents in
foo.py
.$ python foo.py # foo.py is a file containing a Python program
-
Jupyter notebook. This allows you to write and execute Python code interactively in your web browser. It allows you to mix Python code with rendered text and math for the purposes of demonstration or tracking your train of thought. You may find the Stanford CS231n iPython tutorial useful.
$ jupyter notebook
Python Resources
Here are some resources and tutorials for picking up Python:
- Python for Java programmers
- Google’s Python class
- The Python tutorial
- Python Basics for Java Developers
- Python Primer for Java Developers
- Norm Matloff’s Fast Lane to Python
- SciPy Lecture Notes
- Stanford CS231n Numpy Tutorial
Project
You will work in groups of 2-3 for the final project. The goal of the project is to apply machine learning algorithms to real-world tasks or to prepare you for machine learning or AI research. The project is a critical part of the course and a significant factor in determining your grade (greater than each individual exam). Each team has four deliverables on Canvas: a proposal, a short “madness” presentation, a final presentation, and a final report.
Topic
The project topic is open-ended and can be an application project or an algorithmic project (developing a new learning algorithm or novel variant of existing one). Each team is free to choose any problem and dataset provided the number of samples times the features is at least on the order of millions. This means that the data should be large enough to find some interesting properties and insights from it. If you use an existing dataset, there is a strong preference for using a publicly avialably one. If you intend to collect the needed data yourself, keep in mind this is only one part of the expected project work and can often take considerable time.
Evaluation
The breakdown of the final project is tentatively - proposal (15%), spotlight (10%), presentation (25%), report (50%). These numbers may change slightly, but the majority of the grade will be from the presentation and the report. The team size will also be taken under consideration when evaluating the scope of the project in breadth and depth, meaning that a three-person team is expected to accomplish more than a two-person team would.
Projects will be evaluated based on:
- Technical quality of the work: Are the pre-processing and choice of models appropriate and well-justified? Are the models properly evaluated?
- Analysis: What are the insights obtained from the project? Are there detailed analysis of what went right and wrong (i.e., why certain methods are more promising than others)?
- Significance: Did the team choose an interesting “real” problem or is it a relatively small toy problem?
- Novelty: Is this project a well-studied problem? In order to highlight these components, it is important you present a solid discussion regarding the learnings from the development of your method, and summarizing how your work compares to existing approaches.
Project Proposal
For the proposal, you’ll pick a project idea to work on early and receive feedback from the instructor.
Format: Your proposal should be a PDF document that contains approximately 1-2 pages worth of material. It should have the following parts:
- Title of the project.
- Full name of all team members.
- Description of the problem and the data. If you are using a Kaggle competition or dataset, it is not sufficient to provide just the link or to copy the text from the website.
- Description of what you plan to do. For example, what are the machine learning methods you plan to apply or improve on. What are the experiments you plan to run and how do you plan to evaluate the algorithms?
- Short list of references to showcase what has been done to date.
Grading: The project proposal is mainly intended to make sure you decide on a project topic, thought about the initial steps to take, and get feedback early. As long as your proposal follows the instructions above and the project seems reasonably well-thought out, you should do well on the proposal.
Spotlight
For the spotlight, each team will give a 1-slide, 90-second talk to convey an overview of their project. This gives each team a chance to experience talking to a large audience and get some presentation feedback while also getting an idea of what all the other teams are working on.
Format: 1 Powerpoint presentation slide (PPT) that will auto-advance to the next slide.
Grading: Each team will be scored by the other teams, a small panel of judges, and the instructor based on clarity, problem motivation, quality of the content, and overall presentation quality.
Presentation
For the presentation, each team will give an 8-10 minute talk (based on the size of the group).
Format: Slides with content that motivate the problem, the approach, and the experimental results. A PDF version of the slides will be submitted to Canvas.
Grading: Each team will be scored by the other teams and the instructor based on clarity, problem motivation, quality of the content, cohesiveness of the presentation, and overall presentation quality.
Report
Final project reports can be at most 5 pages long (including appendices and figures). We will allow for extra pages containing only references. If you did this work in collaboration with someone else, or if someone else (such as another professor) had advised you on this work, your write-up must fully acknowledge their contributions.
Format: A PDF document that is between 8-12 pages (single columns and no smaller than 11-point font) with additional pages for references. The typical ingredients of a project report are approximately:
- Abstract (1-2 paragraphs)
- Introduction: What is the problem being addressed? Why is it important? Overview and high-level rationale of your approach. Highlight the novelty, key contributions, or significance of your project.
- Background: Past related work on the problem done by others.
- Methods: Describe your learning algorithms or proposed algorithm(s). Introduce any relevant mathematical notation if needed. For each algorithm, give a short descrption of how it works. For algorithms covered in class, this can be 1-3 sentences to convey why it might be useful for this problem. If you are using a niche or cutting-edge algorithm, you may want to explain your algorithm in 1-2 paragraphs.
- Experiments/Results
- Data description
- Exploratory data analysis, preprocessing, feature extraction, feature selection: Enough to ensure your experiments can be replicated by others
- Modeling choices: What models did you select? Why? How were parameters determined? Other design choices such as subsampling, oversampling, etc.
- Empirical results and comparisons (figures and tables)
- Discussion: What are the key findings and lessons learned from the experiment?
- Contributions: Please include a section that describes what each team member worked on and contributed to the project. We may reach out and factor in contributions and evaluations when assigning project grades.
- Code: Please include a link to either a Github repository, Google drive folder, or Dropbox folder with the code for your final project.
Grading: The final report will be judged based off of the clarity of the report, the novelty of the problem, the technical quality, the analysis, and significance of the work. The major components include a clear motivation and description of the project goals, the chosen methodologies (preprocessing and machine learning models), the presentation and evaluation of the results, replicability of the results (is the description such that someone well-versed in machine learning could obtain similar results on the same dataset), insights from the project and analysis of the results, appropriate/relevant reference list, and the quality of the writing (grammar and style).
More details on projects are posted on Piazza under the projects folder.


| Home | Libraries | People | FAQ | More |
Boost.AFIO came about out of the need for a scalable, high performance, portable asynchronous file i/o implementation library for a forthcoming filing system based graph store ACID compliant transactional persistence layer called TripleGit — call it a “SQLite3 but for graphstores”[2]. The fact that a portable asynchronous file i/o library for C++ was needed at all came as a bit of a surprise: one thinks of these things as done and dusted decades ago, but it turns out that the fully featured libuv, a C library, is good enough for most people needing portable asynchronous file i/o. However as great as libuv is, it isn't very C++-ish, and hooking it in with Boost.ASIO (parts of which are expected to enter the ISO C++ language standard) isn't particularly clean. I therefore resolved to write a native Boost asynchronous file i/o implementation, and keep it as simple as possible.
Boost.AFIO is actually, of course, really a different take on Google's WG21 N3731 (Executors and schedulers v2) and Microsoft's WG21 N3721 (Improvements to std::future<T> and Related APIs). Both Google and Microsoft, like many other big iron C++ users, have much need to asynchronously execute large numbers of closures (bound function objects) with various dependencies between the completion of one or more closures before allowing the starting of one or more other closures. What one effectively does is to create a dependency chain of small items to be executed, and then fire as many compute resources as possible at those chains, with the engine executing as many of them simultaneously as is permitted by the requirements of the dependency chains. Boost.AFIO differs from N3562 by directly extending Boost.ASIO, so if you're already using Boost.ASIO to do your networking, well it's a real cinch to add in asynchronous closure execution e.g. “if a packet of data arrives, do this set of operations according to this dependency chain”. Boost.AFIO differs from N3634 by going a lot further than N3634 does by having explicit support for both Boost.ASIO and targeted file i/o support infrastructure. Boost.AFIO therefore lies somewhere in between N3562 and N3634 in terms of complexity, but instead of specifying a new system of executors it uses Boost.ASIO central dispatch engine as the executor.
For v1.0, AFIO used a simple dispatch engine which kept the extant ops in a hash table, and the entire dispatch engine was protected by a single giant and recursive mutex. Performance never exceeded about 150k ops/sec maximum on a four core Intel Ivy Bridge CPU.
That performance was embarrassing, so for v1.1 the entire engine was rewritten
using vast numbers of atomics to be completely lock free, and very nearly wait
free if it weren't for the thin spin locks around the central ops hash table
(which will be replaced with memory transactions if Intel TSX extensions are
available, with support for __transaction_relaxed
compilers if BOOST_HAVE_TRANSACTIONAL_MEMORY_COMPILER
is defined). Now performance can reach 1.5m ops/sec on a four core Intel Ivy
Bridge CPU, or more than half of Boost.ASIO's maximum dispatch rate, which
probably means AFIO is close to optimal now, at least without having to replace
the use of STL multithreading facilities and the system memory allocator with
more exotic varieties.
[2] The UnQLite embedded NoSQL database engine is exactly one of those of course. Unfortunately I intend TripleGit for implementing portable Component Objects for C++ extending C++ Modules, which means I need a database engine suitable for incorporation into a dynamic linker, which unfortunately is not quite UnQLite.


|
LabBot
|
A class for selecting, setting up, starting and stopping a usb camera to take still images. More...
#import <DRHStillCamera.h>
Instance Methods | |
| (NSArray *) | - availableDevices |
| (AVCaptureStillImageOutput *) | - stillImageOutput |
| (void) | - selectDeviceAtIndex: |
| (BOOL) | - startCameraSession |
| (void) | - stopCameraSession |
| (BOOL) | - isRunning |
Protected Attributes | |
| NSArray * | availableDevices |
An array of AVCaptureDevice objects that are capable of caputre the media type AVMediaTypeVideo . | |
| AVCaptureDevice * | device |
The currently selected AVCaptureDevice from the array of availableDevices . | |
| AVCaptureSession * | cameraSession |
The AVCaptureSession used to run the selected camera device. | |
| AVCaptureStillImageOutput * | stillImageOutput |
The AVCaptureOutput used to run the selected camera device as a still cammera. | |
A class for selecting, setting up, starting and stopping a usb camera to take still images.
This class simplifies the setting up of camera devices for still image capture. It has methods to that provide a list of available hardware and selecting a device from that list. Setup of the AVCaptureSession
and AVCaptureOutput
are done in the startCameraSession
before the capture session is started. Using this class a USB webcam can be ready to capture still images in few method calls.
Use of this class will typically involve getting the array of available devices using the availableDevices
method and then selecting one of those devices to be used for still image capture using selectDeviceAtIndex:
. After a camera device is selected it should be started using startCameraSession
. If the session is sucessfully started images can be captured by sending the captureStillImageAsynchronouslyFromConnection:
method to the stillImageOutput
of the DRHStillCamera
using an initialised AVCaptureConnection
. For example:
| - (NSArray *) availableDevices |
A getter method for the array of AVCaptureDevice
available to use as a still camera.
AVCaptureDevice
objects that are capable of AVMediaTypeVideo
. | - (BOOL) isRunning |
Used to check if the currently selected camera device is currently running, that is has an active AVCaptureSession
.
YES
if the selected camera device is currently running an AVCaptureSession
, otherwise NO
. | - (void) selectDeviceAtIndex: | (NSInteger) | index |
Selects one of the camera devices in the availableDevices
array. The selected device will be acted upon by future calls to startCameraSession
, stopCameraSession
and isRunning
.
| index | The index of a AVCaptureDevice currently in availableDevices . |
| - (BOOL) startCameraSession |
Checks that a camera device has been selected then initialises the input and output of the selected camera device before starting the device.
YES
if all initialisation was sucessfully completed and the camera session was successfully started. Otherwise returns NO
. | - (AVCaptureStillImageOutput *) stillImageOutput |
A getter for the still image output steam used to retrieve still images from the selected camera device.
AVCaptureStillImageOutput
object for the currently selected camera device. | - (void) stopCameraSession |
Stops the current session of the selected camera device.


#ftl output_format="HTML" auto_esc=true> <#import "layout/default.html" as layout><EMAIL_ADDRESS>Hello ${notificationTarget.name},
We have received a request to change the password for your account. You can do this through the link below.
<EMAIL_ADDRESS>href="${passwordResetLink}" text="Reset password" />If you didn't request this, please ignore this email.
Your password won't change until you access the link above and create a new one.
<EMAIL_ADDRESS>/> @layout.default>


Fitt's Law
Swiss Miss
swissmiss.com
Swiss Miss has two principal features on its website: images and a
button on them. The centered button in the image brings attention to
it, and at the same time, does not overlap the referenced image. Also,
it is in an easy to tap location. In this example, the bottom button
is bigger than the top one because of its use frequency.
Contrast
National Geographic
nationalgeographic.com
The National Geographic site is recognizable due to its particular
yellow color. The website displays three colors: yellow, black, and
white. Using a primary color in comparison with monochromatic makes a
high contrast and is appealing to the user. Also, there is a contrast
in the size and weight of the fonts.
Repetition
One Loved Babe
onelovedbabe.com
Repetition is a design principle that provides consistency to a
website, giving a sense of wholeness and relation. The repetitive
elements in this clothing boutique website are color and fonts. The
mauve color is present in the header, in the background of the image,
and the "Message Us" button. The serif, sans serif, and handwriting
fonts are shown at least twice.