/**
* @file player_reacts.cc
* @brief Player functions called every turn, mostly handling enchantment durations/expirations.
**/
#include "AppHdr.h"
#include "player-reacts.h"
#include <algorithm>
#include <cerrno>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <list>
#include <sstream>
#include <string>
#ifndef TARGET_OS_WINDOWS
# ifndef __ANDROID__
# include <langinfo.h>
# endif
#endif
#include <fcntl.h>
#ifdef USE_UNIX_SIGNALS
#include <csignal>
#endif
#include "abyss.h" // abyss_maybe_spawn_xp_exit
#include "act-iter.h"
#include "areas.h"
#include "artefact.h"
#include "beam.h"
#include "cloud.h"
#include "clua.h"
#include "colour.h"
#include "coord.h"
#include "coordit.h"
#include "database.h"
#include "dbg-util.h"
#include "delay.h"
#ifdef DGL_SIMPLE_MESSAGING
#include "dgl-message.h"
#endif
#include "dlua.h"
#include "dungeon.h"
#include "env.h"
#include "exercise.h"
#include "files.h"
#include "food.h"
#include "god-abil.h"
#include "god-companions.h"
#include "god-passive.h"
#include "invent.h"
#include "item-prop.h"
#include "item-use.h"
#include "level-state-type.h"
#include "libutil.h"
#include "maps.h"
#include "message.h"
#include "mon-abil.h"
#include "mon-cast.h"
#include "mon-death.h"
#include "mon-place.h"
#include "mon-tentacle.h"
#include "mon-util.h"
#include "mutation.h"
#include "ouch.h"
#include "player.h"
#include "player-stats.h"
#include "random.h"
#include "religion.h"
#include "shopping.h"
#include "shout.h"
#include "skills.h"
#include "spl-cast.h"
#include "spl-clouds.h"
#include "spl-damage.h"
#include "spl-goditem.h"
#include "spl-other.h"
#include "spl-summoning.h"
#include "spl-transloc.h"
#include "spl-util.h"
#include "state.h"
#include "status.h"
#include "stepdown.h"
#include "stringutil.h"
#include "terrain.h"
#ifdef USE_TILE
#include "rltiles/tiledef-dngn.h"
#include "tilepick.h"
#endif
#include "transform.h"
#include "traps.h"
#include "travel.h"
#include "view.h"
#include "xom.h"
/**
* Decrement a duration by the given delay.
* The midloss value should be either 0 or a number of turns where the delay
* from those turns at normal speed is less than the duration's midpoint. The
* use of midloss prevents the player from knowing the exact remaining duration
* when the midpoint message is displayed.
*
* @param dur The duration type to be decremented.
* @param delay The delay aut amount by which to decrement the duration.
* @param endmsg The message to be displayed when the duration ends.
* @param midloss A number of normal-speed turns by which to further decrement
* the duration if we cross the duration's midpoint.
* @param endmsg The message to be displayed when the duration is decremented
* to a value under its midpoint.
* @param chan The channel where the endmsg will be printed if the duration
* ends.
*
* @return True if the duration ended, false otherwise.
*/
static bool _decrement_a_duration(duration_type dur, int delay,
const char* endmsg = nullptr,
int midloss = 0,
const char* midmsg = nullptr,
msg_channel_type chan = MSGCH_DURATION)
{
ASSERT(you.duration[dur] >= 0);
if (you.duration[dur] == 0)
return false;
ASSERT(!midloss || midmsg != nullptr);
const int midpoint = duration_expire_point(dur);
ASSERTM(!midloss || midloss * BASELINE_DELAY < midpoint,
"midpoint delay loss %d not less than duration midpoint %d",
midloss * BASELINE_DELAY, midpoint);
const int old_dur = you.duration[dur];
you.duration[dur] -= delay;
// If we cross the midpoint, handle midloss and print the midpoint message.
if (you.duration[dur] <= midpoint && old_dur > midpoint)
{
you.duration[dur] -= midloss * BASELINE_DELAY;
if (midmsg)
{
// Make sure the player has a turn to react to the midpoint
// message.
if (you.duration[dur] <= 0)
you.duration[dur] = 1;
if (need_expiration_warning(dur))
mprf(MSGCH_DANGER, "Careful! %s", midmsg);
else
mprf(chan, "%s", midmsg);
}
}
if (you.duration[dur] <= 0)
{
you.duration[dur] = 0;
if (endmsg && *endmsg != '\0')
mprf(chan, "%s", endmsg);
return true;
}
return false;
}
static void _decrement_petrification(int delay)
{
if (_decrement_a_duration(DUR_PETRIFIED, delay) && !you.paralysed())
{
you.redraw_evasion = true;
// implicit assumption: all races that can be petrified are made of
// flesh when not petrified
const string flesh_equiv = get_form()->flesh_equivalent.empty() ?
"flesh" :
get_form()->flesh_equivalent;
mprf(MSGCH_DURATION, "You turn to %s and can move again.",
flesh_equiv.c_str());
if (you.props.exists(PETRIFIED_BY_KEY))
you.props.erase(PETRIFIED_BY_KEY);
}
if (you.duration[DUR_PETRIFYING])
{
int &dur = you.duration[DUR_PETRIFYING];
int old_dur = dur;
if ((dur -= delay) <= 0)
{
dur = 0;
// If we'd kill the player when active flight stops, this will
// need to pass the killer. Unlike monsters, almost all flight is
// magical, inluding tengu, as there's no flapping of wings. Should
// we be nasty to dragon and bat forms? For now, let's not instakill
// them even if it's inconsistent.
you.fully_petrify(nullptr);
}
else if (dur < 15 && old_dur >= 15)
mpr("Your limbs are stiffening.");
}
}
static void _decrement_paralysis(int delay)
{
_decrement_a_duration(DUR_PARALYSIS_IMMUNITY, delay);
if (you.duration[DUR_PARALYSIS])
{
_decrement_a_duration(DUR_PARALYSIS, delay);
if (!you.duration[DUR_PARALYSIS] && !you.petrified())
{
mprf(MSGCH_DURATION, "You can move again.");
you.redraw_evasion = true;
you.duration[DUR_PARALYSIS_IMMUNITY] = roll_dice(1, 3)
* BASELINE_DELAY;
if (you.props.exists(PARALYSED_BY_KEY))
you.props.erase(PARALYSED_BY_KEY);
}
}
}
/**
* Check whether the player's ice (Ozocubu's) armour was melted this turn.
* If so, print the appropriate message and clear the flag.
*/
static void _maybe_melt_armour()
{
// We have to do the messaging here, because a simple wand of flame will
// call _maybe_melt_player_enchantments twice. It also avoids duplicate
// messages when melting because of several heat sources.
if (you.props.exists(MELT_ARMOUR_KEY))
{
you.props.erase(MELT_ARMOUR_KEY);
mprf(MSGCH_DURATION, "The heat melts your icy armour.");
}
}
/**
* How much horror does the player character feel in the current situation?
*
* (For Ru's MUT_COWARDICE.)
*
* Penalties are based on the "scariness" (threat level) of monsters currently
* visible.
*/
static int _current_horror_level()
{
int horror_level = 0;
for (monster_near_iterator mi(&you, LOS_NO_TRANS); mi; ++mi)
{
if (mons_aligned(*mi, &you)
|| !mons_is_threatening(**mi)
|| mons_is_tentacle_or_tentacle_segment(mi->type))
{
continue;
}
const mon_threat_level_type threat_level = mons_threat_level(**mi);
if (threat_level == MTHRT_NASTY)
horror_level += 3;
else if (threat_level == MTHRT_TOUGH)
horror_level += 1;
}
// Subtract one from the horror level so that you don't get a message
// when a single tough monster appears.
horror_level = max(0, horror_level - 1);
return horror_level;
}
/**
* What was the player's most recent horror level?
*
* (For Ru's MUT_COWARDICE.)
*/
static int _old_horror_level()
{
if (you.duration[DUR_HORROR])
return you.props[HORROR_PENALTY_KEY].get_int();
return 0;
}
/**
* When the player should no longer be horrified, end the DUR_HORROR if it
* exists & cleanup the corresponding prop.
*/
static void _end_horror()
{
if (!you.duration[DUR_HORROR])
return;
you.props.erase(HORROR_PENALTY_KEY);
you.set_duration(DUR_HORROR, 0);
}
/**
* Update penalties for cowardice based on the current situation, if the player
* has Ru's MUT_COWARDICE.
*/
static void _update_cowardice()
{
if (!you.has_mutation(MUT_COWARDICE))
{
// If the player somehow becomes sane again, handle that
_end_horror();
return;
}
const int horror_level = _current_horror_level();
if (horror_level <= 0)
{
// If you were horrified before & aren't now, clean up.
_end_horror();
return;
}
// Lookup the old value before modifying it
const int old_horror_level = _old_horror_level();
// as long as there's still scary enemies, keep the horror going
you.props[HORROR_PENALTY_KEY] = horror_level;
you.set_duration(DUR_HORROR, 1);
// only show a message on increase
if (horror_level <= old_horror_level)
return;
if (horror_level >= HORROR_LVL_OVERWHELMING)
mpr("Monsters! Monsters everywhere! You have to get out of here!");
else if (horror_level >= HORROR_LVL_EXTREME)
mpr("You reel with horror at the sight of these foes!");
else
mpr("You feel a twist of horror at the sight of this foe.");
}
// Uskawyaw piety decays incredibly fast, but only to a baseline level of *.
// Using Uskayaw abilities can still take you under *.
static void _handle_uskayaw_piety(int time_taken)
{
if (you.props[USKAYAW_NUM_MONSTERS_HURT].get_int() > 0)
{
int num_hurt = you.props[USKAYAW_NUM_MONSTERS_HURT];
int hurt_val = you.props[USKAYAW_MONSTER_HURT_VALUE];
int piety_gain = max(num_hurt, stepdown_value(hurt_val, 5, 10, 20, 40));
gain_piety(piety_gain);
you.props[USKAYAW_AUT_SINCE_PIETY_GAIN] = 0;
}
else if (you.piety > piety_breakpoint(0))
{
// If we didn't do a dance action and we can lose piety, we're going
// to lose piety proportional to the time since the last time we took
// a dance action and hurt a monster.
int time_since_gain = you.props[USKAYAW_AUT_SINCE_PIETY_GAIN].get_int();
time_since_gain += time_taken;
// Only start losing piety if it's been a few turns since we gained
// piety, in order to give more tolerance for missing in combat.
if (time_since_gain > 30)
{
int piety_lost = min(you.piety - piety_breakpoint(0),
div_rand_round(time_since_gain, 10));
if (piety_lost > 0)
lose_piety(piety_lost);
}
you.props[USKAYAW_AUT_SINCE_PIETY_GAIN] = time_since_gain;
}
// Re-initialize Uskayaw piety variables
you.props[USKAYAW_NUM_MONSTERS_HURT] = 0;
you.props[USKAYAW_MONSTER_HURT_VALUE] = 0;
}
static void _handle_uskayaw_time(int time_taken)
{
_handle_uskayaw_piety(time_taken);
int audience_timer = you.props[USKAYAW_AUDIENCE_TIMER].get_int();
int bond_timer = you.props[USKAYAW_BOND_TIMER].get_int();
// For the timered abilities, if we set the timer to -1, that means we
// need to trigger the abilities this turn. Otherwise we'll decrement the
// timer down to a minimum of 0, at which point it becomes eligible to
// trigger again.
if (audience_timer == -1 || (you.piety >= piety_breakpoint(2)
&& x_chance_in_y(time_taken, 100 + audience_timer)))
{
uskayaw_prepares_audience();
}
else
you.props[USKAYAW_AUDIENCE_TIMER] = max(0, audience_timer - time_taken);
if (bond_timer == -1 || (you.piety >= piety_breakpoint(3)
&& x_chance_in_y(time_taken, 100 + bond_timer)))
{
uskayaw_bonds_audience();
}
else
you.props[USKAYAW_BOND_TIMER] = max(0, bond_timer - time_taken);
}
/**
* Player reactions after monster and cloud activities in the turn are finished.
*/
void player_reacts_to_monsters()
{
// In case Maurice managed to steal a needed item for example.
if (!you_are_delayed())
update_can_currently_train();
if (you.duration[DUR_FIRE_SHIELD] > 0)
manage_fire_shield();
check_monster_detect();
if (have_passive(passive_t::detect_items) || you.has_mutation(MUT_JELLY_GROWTH)
|| you.get_mutation_level(MUT_STRONG_NOSE) > 0)
{
detect_items(-1);
}
_decrement_paralysis(you.time_taken);
_decrement_petrification(you.time_taken);
if (_decrement_a_duration(DUR_SLEEP, you.time_taken))
you.awaken();
if (_decrement_a_duration(DUR_GRASPING_ROOTS, you.time_taken)
&& you.is_constricted())
{
// We handle the end-of-enchantment message here since the method
// of constriction is no longer detectable.
mprf("The grasping roots release their grip on you.");
you.stop_being_constricted(true);
}
_maybe_melt_armour();
_update_cowardice();
if (you_worship(GOD_USKAYAW))
_handle_uskayaw_time(you.time_taken);
}
static bool _check_recite()
{
if (silenced(you.pos())
|| you.paralysed()
|| you.confused()
|| you.asleep()
|| you.petrified()
|| you.berserk())
{
mprf(MSGCH_DURATION, "Your recitation is interrupted.");
you.duration[DUR_RECITE] = 0;
return false;
}
return true;
}
static void _handle_recitation(int step)
{
mprf("\"%s\"",
zin_recite_text(you.attribute[ATTR_RECITE_SEED],
you.attribute[ATTR_RECITE_TYPE], step).c_str());
if (apply_area_visible(zin_recite_to_single_monster, you.pos()))
viewwindow();
// Recite trains more than once per use, because it has a
// long timer in between uses and actually takes up multiple
// turns.
practise_using_ability(ABIL_ZIN_RECITE);
noisy(you.shout_volume(), you.pos());
if (step == 0)
{
ostringstream speech;
speech << zin_recite_text(you.attribute[ATTR_RECITE_SEED],
you.attribute[ATTR_RECITE_TYPE], -1);
speech << '.';
if (one_chance_in(27))
{
const string closure = getSpeakString("recite_closure");
if (!closure.empty())
speech << ' ' << closure;
}
mprf(MSGCH_DURATION, "You finish reciting %s", speech.str().c_str());
}
}
/**
* Try to respawn the player's ancestor, if possible.
*/
static void _try_to_respawn_ancestor()
{
monster *ancestor = create_monster(hepliaklqana_ancestor_gen_data());
if (!ancestor)
return;
mprf("%s emerges from the mists of memory!",
ancestor->name(DESC_YOUR).c_str());
add_companion(ancestor);
check_place_cloud(CLOUD_MIST, ancestor->pos(), random_range(1,2),
ancestor); // ;)
}
/**
* Take a 'simple' duration, decrement it, and print messages as appropriate
* when it hits 50% and 0% remaining.
*
* @param dur The duration in question.
* @param delay How much to decrement the duration by.
*/
static void _decrement_simple_duration(duration_type dur, int delay)
{
if (_decrement_a_duration(dur, delay, duration_end_message(dur),
duration_mid_offset(dur),
duration_mid_message(dur),
duration_mid_chan(dur)))
{
duration_end_effect(dur);
}
}
/**
* Decrement player durations based on how long the player's turn lasted in aut.
*/
static void _decrement_durations()
{
const int delay = you.time_taken;
if (you.gourmand())
{
// Innate gourmand is always fully active.
if (you.has_mutation(MUT_GOURMAND))
you.duration[DUR_GOURMAND] = GOURMAND_MAX;
else if (you.duration[DUR_GOURMAND] < GOURMAND_MAX && coinflip())
you.duration[DUR_GOURMAND] += delay;
}
else
you.duration[DUR_GOURMAND] = 0;
if (you.duration[DUR_LIQUID_FLAMES])
dec_napalm_player(delay);
const bool melted = you.props.exists(MELT_ARMOUR_KEY);
if (_decrement_a_duration(DUR_ICY_ARMOUR, delay,
"Your icy armour evaporates.",
melted ? 0 : coinflip(),
melted ? nullptr
: "Your icy armour starts to melt."))
{
if (you.props.exists(ICY_ARMOUR_KEY))
you.props.erase(ICY_ARMOUR_KEY);
you.redraw_armour_class = true;
}
// Possible reduction of silence radius.
if (you.duration[DUR_SILENCE])
invalidate_agrid();
// and liquefying radius.
if (you.duration[DUR_LIQUEFYING])
invalidate_agrid();
// FIXME: [ds] Remove this once we've ensured durations can never go < 0?
if (you.duration[DUR_TRANSFORMATION] <= 0
&& you.form != transformation::none)
{
you.duration[DUR_TRANSFORMATION] = 1;
}
// Vampire bat transformations are permanent (until ended), unless they
// are uncancellable (polymorph wand on a full vampire).
if (you.species != SP_VAMPIRE || you.form != transformation::bat
|| you.transform_uncancellable)
{
if (form_can_fly()
|| form_likes_water() && feat_is_water(grd(you.pos())))
{
// Disable emergency flight if it was active
you.props.erase(EMERGENCY_FLIGHT_KEY);
}
if (_decrement_a_duration(DUR_TRANSFORMATION, delay, nullptr, random2(3),
"Your transformation is almost over."))
{
untransform();
}
}
if (you.attribute[ATTR_SWIFTNESS] >= 0)
{
if (_decrement_a_duration(DUR_SWIFTNESS, delay,
"You feel sluggish.", coinflip(),
"You start to feel a little slower."))
{
// Start anti-swiftness.
you.duration[DUR_SWIFTNESS] = you.attribute[ATTR_SWIFTNESS];
you.attribute[ATTR_SWIFTNESS] = -1;
}
}
else
{
if (_decrement_a_duration(DUR_SWIFTNESS, delay,
"You no longer feel sluggish.", coinflip(),
"You start to feel a little faster."))
{
you.attribute[ATTR_SWIFTNESS] = 0;
}
}
// Decrement Powered By Death strength
int pbd_str = you.props[POWERED_BY_DEATH_KEY].get_int();
if (pbd_str > 0 && _decrement_a_duration(DUR_POWERED_BY_DEATH, delay))
{
you.props[POWERED_BY_DEATH_KEY] = pbd_str - 1;
reset_powered_by_death_duration();
}
dec_ambrosia_player(delay);
dec_channel_player(delay);
dec_slow_player(delay);
dec_berserk_recovery_player(delay);
dec_haste_player(delay);
for (int i = 0; i < NUM_STATS; ++i)
{
stat_type s = static_cast<stat_type>(i);
if (you.stat(s) > 0
&& _decrement_a_duration(stat_zero_duration(s), delay))
{
mprf(MSGCH_RECOVERY, "Your %s has recovered.", stat_desc(s, SD_NAME));
you.redraw_stats[s] = true;
if (you.duration[DUR_SLOW] == 0)
mprf(MSGCH_DURATION, "You feel yourself speed up.");
}
}
// Leak piety from the piety pool into actual piety.
// Note that changes of religious status without corresponding actions
// (killing monsters, offering items, ...) might be confusing for characters
// of other religions.
// For now, though, keep information about what happened hidden.
if (you.piety < MAX_PIETY && you.duration[DUR_PIETY_POOL] > 0
&& one_chance_in(5))
{
you.duration[DUR_PIETY_POOL]--;
gain_piety(1, 1);
#if defined(DEBUG_DIAGNOSTICS) || defined(DEBUG_SACRIFICE) || defined(DEBUG_PIETY)
mprf(MSGCH_DIAGNOSTICS, "Piety increases by 1 due to piety pool.");
if (you.duration[DUR_PIETY_POOL] == 0)
mprf(MSGCH_DIAGNOSTICS, "Piety pool is now empty.");
#endif
}
if (you.duration[DUR_DISJUNCTION])
disjunction_spell();
// Should expire before flight.
if (you.duration[DUR_TORNADO])
{
tornado_damage(&you, min(delay, you.duration[DUR_TORNADO]));
if (_decrement_a_duration(DUR_TORNADO, delay,
"The winds around you start to calm down."))
{
you.duration[DUR_TORNADO_COOLDOWN] = random_range(35, 45);
}
}
if (you.duration[DUR_FLIGHT])
{
if (!you.permanent_flight())
{
if (_decrement_a_duration(DUR_FLIGHT, delay, nullptr, random2(6),
"You are starting to lose your buoyancy."))
{
land_player();
}
else
{
// Disable emergency flight if it was active
you.props.erase(EMERGENCY_FLIGHT_KEY);
}
}
else if ((you.duration[DUR_FLIGHT] -= delay) <= 0)
{
// Just time out potions/spells/miscasts.
you.attribute[ATTR_FLIGHT_UNCANCELLABLE] = 0;
you.duration[DUR_FLIGHT] = 0;
you.props.erase(EMERGENCY_FLIGHT_KEY);
}
}
if (you.duration[DUR_DEATHS_DOOR]
&& you.attribute[ATTR_DEATHS_DOOR_HP] > 0
&& you.hp > you.attribute[ATTR_DEATHS_DOOR_HP])
{
set_hp(you.attribute[ATTR_DEATHS_DOOR_HP]);
you.redraw_hit_points = true;
}
else if (!you.duration[DUR_DEATHS_DOOR]
&& you.attribute[ATTR_DEATHS_DOOR_HP] > 0)
{
you.attribute[ATTR_DEATHS_DOOR_HP] = 0;
}
if (_decrement_a_duration(DUR_CLOUD_TRAIL, delay,
"Your trail of clouds dissipates."))
{
you.props.erase(XOM_CLOUD_TRAIL_TYPE_KEY);
}
if (you.duration[DUR_DARKNESS] && you.haloed())
{
you.duration[DUR_DARKNESS] = 0;
mpr("The divine light dispels your darkness!");
update_vision_range();
}
if (you.duration[DUR_WATER_HOLD])
handle_player_drowning(delay);
if (you.duration[DUR_FLAYED])
{
bool near_ghost = false;
for (monster_iterator mi; mi; ++mi)
{
if (mi->type == MONS_FLAYED_GHOST && !mi->wont_attack()
&& you.see_cell(mi->pos()))
{
near_ghost = true;
break;
}
}
if (!near_ghost)
{
if (_decrement_a_duration(DUR_FLAYED, delay))
heal_flayed_effect(&you);
}
else if (you.duration[DUR_FLAYED] < 80)
you.duration[DUR_FLAYED] += div_rand_round(50, delay);
}
if (you.duration[DUR_TOXIC_RADIANCE])
toxic_radiance_effect(&you, min(delay, you.duration[DUR_TOXIC_RADIANCE]));
if (you.duration[DUR_RECITE] && _check_recite())
{
const int old_recite =
(you.duration[DUR_RECITE] + BASELINE_DELAY - 1) / BASELINE_DELAY;
_decrement_a_duration(DUR_RECITE, delay);
const int new_recite =
(you.duration[DUR_RECITE] + BASELINE_DELAY - 1) / BASELINE_DELAY;
if (old_recite != new_recite)
_handle_recitation(new_recite);
}
if (you.attribute[ATTR_NEXT_RECALL_INDEX] > 0)
do_recall(delay);
if (you.duration[DUR_DRAGON_CALL])
do_dragon_call(delay);
if (you.duration[DUR_ABJURATION_AURA])
do_aura_of_abjuration(delay);
if (you.duration[DUR_DOOM_HOWL])
doom_howl(min(delay, you.duration[DUR_DOOM_HOWL]));
dec_elixir_player(delay);
dec_frozen_ramparts(delay);
if (!you.cannot_move()
&& !you.confused()
&& !you.asleep())
{
extract_manticore_spikes(
make_stringf("You %s the barbed spikes from your body.",
you.berserk() ? "rip and tear" : "carefully extract").c_str());
}
if (!you.duration[DUR_ANCESTOR_DELAY]
&& in_good_standing(GOD_HEPLIAKLQANA)
&& hepliaklqana_ancestor() == MID_NOBODY)
{
_try_to_respawn_ancestor();
}
const bool sanguine_armour_is_valid = sanguine_armour_valid();
if (sanguine_armour_is_valid)
activate_sanguine_armour();
else if (!sanguine_armour_is_valid && you.duration[DUR_SANGUINE_ARMOUR])
you.duration[DUR_SANGUINE_ARMOUR] = 1; // expire
if (you.duration[DUR_HEAVENLY_STORM])
wu_jian_heaven_tick();
// these should be after decr_ambrosia, transforms, liquefying, etc.
for (int i = 0; i < NUM_DURATIONS; ++i)
if (duration_decrements_normally((duration_type) i))
_decrement_simple_duration((duration_type) i, delay);
}
/**
* Handles player ghoul rotting over time.
*/
static void _rot_ghoul_players()
{
if (you.species != SP_GHOUL)
return;
int resilience = 400;
if (have_passive(passive_t::slow_metabolism))
resilience = resilience * 3 / 2;
// Faster rotting when hungry.
if (you.hunger_state < HS_SATIATED)
resilience >>= HS_SATIATED - you.hunger_state;
if (one_chance_in(resilience))
{
dprf("rot rate: 1/%d", resilience);
mprf(MSGCH_WARN, "You feel your flesh rotting away.");
rot_hp(1);
}
}
static void _handle_emergency_flight()
{
ASSERT(you.props[EMERGENCY_FLIGHT_KEY].get_bool());
if (!is_feat_dangerous(orig_terrain(you.pos()), true, false))
{
mpr("You float gracefully downwards.");
land_player();
you.props.erase(EMERGENCY_FLIGHT_KEY);
}
else
{
const int drain = div_rand_round(15 * you.time_taken, BASELINE_DELAY);
drain_player(drain, true, true);
}
}
// Regen equipment and amulet of the acrobat only begins to function when full
// health is reached while they are worn.
static void _update_equipment_attunement_by_health()
{
if (you.hp != you.hp_max)
return;
if (!you.activated[EQ_AMULET] && you.wearing(EQ_AMULET, AMU_ACROBAT))
{
mprf("Your amulet attunes itself to your body. You feel like doing "
"cartwheels.");
you.activated.set(EQ_AMULET);
}
if (you.get_mutation_level(MUT_NO_REGENERATION))
return;
vector<string> eq_list;
bool plural = false;
if (!you.activated[EQ_AMULET] && you.wearing(EQ_AMULET, AMU_REGENERATION))
{
eq_list.push_back("amulet");
you.activated.set(EQ_AMULET);
}
for (int slot = EQ_MIN_ARMOUR; slot <= EQ_MAX_ARMOUR; ++slot)
{
if (you.melded[slot] || you.equip[slot] == -1 || you.activated[slot])
continue;
const item_def &arm = you.inv[you.equip[slot]];
if (armour_type_prop(arm.sub_type, ARMF_REGENERATION)
|| is_artefact(arm) && artefact_property(arm, ARTP_REGENERATION))
{
eq_list.push_back(
slot != EQ_BODY_ARMOUR ?
item_slot_name(static_cast<equipment_type>(slot)) :
is_artefact(arm) ? get_artefact_name(arm) : "armour");
if (slot == EQ_GLOVES || slot == EQ_BOOTS)
plural = true;
you.activated.set(slot);
}
}
if (eq_list.empty())
return;
plural = plural || eq_list.size() > 1;
string eq_str = comma_separated_line(eq_list.begin(), eq_list.end());
mprf("Your %s attune%s to your body as you begin to regenerate "
"more quickly.", eq_str.c_str(), plural ? " themselves" : "s itself");
}
// Amulet of magic regeneration needs to be worn while at full magic before it
// begins to function.
static void _update_mana_regen_amulet_attunement()
{
if (you.wearing(EQ_AMULET, AMU_MANA_REGENERATION)
&& player_regenerates_mp())
{
if (you.magic_points == you.max_magic_points
&& you.props[MANA_REGEN_AMULET_ACTIVE].get_int() == 0)
{
you.props[MANA_REGEN_AMULET_ACTIVE] = 1;
mpr("Your amulet attunes itself to your body and you begin to "
"regenerate magic more quickly.");
}
}
else
you.props[MANA_REGEN_AMULET_ACTIVE] = 0;
}
// cjo: Handles player hp and mp regeneration. If the counter
// you.hit_points_regeneration is over 100, a loop restores 1 hp and decreases
// the counter by 100 (so you can regen more than 1 hp per turn). If the counter
// is below 100, it is increased by a variable calculated from delay,
// BASELINE_DELAY, and your regeneration rate. MP regeneration happens
// similarly, but the countup depends on delay, BASELINE_DELAY, and
// you.max_magic_points
static void _regenerate_hp_and_mp(int delay)
{
if (crawl_state.disables[DIS_PLAYER_REGEN])
return;
// HP Regeneration
if (!you.duration[DUR_DEATHS_DOOR])
{
const int base_val = player_regen();
you.hit_points_regeneration += div_rand_round(base_val * delay, BASELINE_DELAY);
}
while (you.hit_points_regeneration >= 100)
{
// at low mp, "mana link" restores mp in place of hp
if (you.has_mutation(MUT_MANA_LINK)
&& !x_chance_in_y(you.magic_points, you.max_magic_points))
{
inc_mp(1);
}
else // standard hp regeneration
inc_hp(1);
you.hit_points_regeneration -= 100;
}
ASSERT_RANGE(you.hit_points_regeneration, 0, 100);
_update_equipment_attunement_by_health();
// MP Regeneration
if (!player_regenerates_mp())
return;
if (you.magic_points < you.max_magic_points)
{
const int base_val = player_mp_regen();
int mp_regen_countup = div_rand_round(base_val * delay, BASELINE_DELAY);
you.magic_points_regeneration += mp_regen_countup;
}
while (you.magic_points_regeneration >= 100)
{
inc_mp(1);
you.magic_points_regeneration -= 100;
}
ASSERT_RANGE(you.magic_points_regeneration, 0, 100);
_update_mana_regen_amulet_attunement();
}
void player_reacts()
{
//XXX: does this _need_ to be calculated up here?
const int stealth = player_stealth();
#ifdef DEBUG_STEALTH
// Too annoying for regular diagnostics.
mprf(MSGCH_DIAGNOSTICS, "stealth: %d", stealth);
#endif
if (you.has_mutation(MUT_DEMONIC_GUARDIAN))
check_demonic_guardian();
if (you.unrand_reacts.any())
unrand_reacts();
// Handle sound-dependent effects that are silenced
if (silenced(you.pos()))
{
if (you.duration[DUR_SONG_OF_SLAYING])
{
mpr("The silence causes your song to end.");
_decrement_a_duration(DUR_SONG_OF_SLAYING, you.duration[DUR_SONG_OF_SLAYING]);
}
}
// Singing makes a continuous noise
if (you.duration[DUR_SONG_OF_SLAYING])
noisy(spell_effect_noise(SPELL_SONG_OF_SLAYING), you.pos());
if (x_chance_in_y(you.time_taken, 10 * BASELINE_DELAY))
{
const int teleportitis_level = player_teleport();
// this is instantaneous
if (teleportitis_level > 0 && one_chance_in(100 / teleportitis_level))
you_teleport_now(false, true, "You feel strangely unstable.");
else if (player_in_branch(BRANCH_ABYSS) && one_chance_in(80)
&& (!map_masked(you.pos(), MMT_VAULT) || one_chance_in(3)))
{
you_teleport_now(); // to new area of the Abyss
// It's effectively a new level, make a checkpoint save so eventual
// crashes lose less of the player's progress (and fresh new bad
// mutations).
if (!crawl_state.disables[DIS_SAVE_CHECKPOINTS])
save_game(false);
}
else if (you.form == transformation::wisp && !you.stasis())
uncontrolled_blink();
}
abyss_maybe_spawn_xp_exit();
actor_apply_cloud(&you);
actor_apply_toxic_bog(&you);
if (env.level_state & LSTATE_SLIMY_WALL)
slime_wall_damage(&you, you.time_taken);
// Icy shield and armour melt over lava.
if (grd(you.pos()) == DNGN_LAVA)
maybe_melt_player_enchantments(BEAM_FIRE, you.time_taken);
// Handle starvation before subtracting hunger for this turn (including
// hunger from the berserk duration) and before monsters react, so you
// always get a turn (though it may be a delay or macro!) between getting
// the Fainting light and actually fainting.
handle_starvation();
_decrement_durations();
_rot_ghoul_players();
// Translocations and possibly other duration decrements can
// escape a player from beholders and fearmongers. These should
// update after.
you.update_beholders();
you.update_fearmongers();
you.handle_constriction();
// increment constriction durations
you.accum_has_constricted();
const int food_use = div_rand_round(player_hunger_rate() * you.time_taken,
BASELINE_DELAY);
if (food_use > 0 && you.hunger > 0)
make_hungry(food_use, true);
_regenerate_hp_and_mp(you.time_taken);
dec_disease_player(you.time_taken);
if (you.duration[DUR_POISONING])
handle_player_poison(you.time_taken);
// Reveal adjacent mimics.
for (adjacent_iterator ai(you.pos(), false); ai; ++ai)
discover_mimic(*ai);
// Player stealth check.
seen_monsters_react(stealth);
// XOM now ticks from here, to increase his reaction time to tension.
if (you_worship(GOD_XOM))
xom_tick();
else if (you_worship(GOD_QAZLAL))
qazlal_storm_clouds();
if (you.props[EMERGENCY_FLIGHT_KEY].get_bool())
_handle_emergency_flight();
}
void extract_manticore_spikes(const char* endmsg)
{
if (_decrement_a_duration(DUR_BARBS, you.time_taken, endmsg))
{
// Note: When this is called in _move player(), ATTR_BARBS_POW
// has already been used to calculated damage for the player.
// Otherwise, this prevents the damage.
you.attribute[ATTR_BARBS_POW] = 0;
you.props.erase(BARBS_MOVE_KEY);
}
}
↑ V648 Priority of the '&&' operation is higher than that of the '||' operation.
↑ V560 A part of conditional expression is always true: !sanguine_armour_is_valid.
↑ V648 Priority of the '&&' operation is higher than that of the '||' operation.


THE PIANO A film review by Scott Renshaw Copyright 1993 Scott Renshaw
Starring: Holly Hunter, Harvey Keitel, Sam Neill, Anna Paquin. Screenplay/Director: Jane Campion.
 I mention this only because I experienced a very similar reaction to THE PIANO as I did to that film. While I was not instantly caught up in the story, its impact grew slowly, and in fact it was not until a couple of days later that I realized what a powerful work I had experienced. THE PIANO is a bit less consistent than AN ANGEL AT MY TABLE, but it is nevertheless an astonishingly literate work, and a further step in the development of a major filmmaker.
Set in 19th Century New Zealand, THE PIANO tells the story of Ada, a Scotswoman who hasn't spoken since she was six years old. At the insistence of her father, Ada becomes a mail-order bride for Stewart, a stolid settler among New Zealand's native Maori. Ada brings with her a young daughter, Flora (Anna Paquin), and her most prized possession, a piano. However, when Stewart arrives at the beach where Ada and her belongings have been deposited, he orders the piano left behind. It comes into the possession of George Baines (Harvey Keitel), a rough and illiterate laborer. He offers Ada the chance to win back her piano in exchange for some very specialized lessons, lessons which will lead to a strange and dangerous romantic triangle.
THE PIANO is so rich and multi-layered that it virtually defies immediate reaction. At its heart is a story of socially repressed desires which calls to mind THE AGE OF INNOCENCE and THE REMAINS OF THE DAY, but this film strengthens that theme by thrusting its characters into an untamed setting. In Ada, we are presented with a character whose muteness represents the restrictions placed on her expression as a woman, and who can only truly speak through her music. It is only when she finds herself in the less constrained world of the New Zealand wilderness, and encounters a man who identifies with the more naturalistic beliefs of the Maori, that she is able to rediscover some semblance of her own voice. THE PIANO is filled with images of culture in conflict: Stewart perplexed by his inability to purchase sacred Maori land for what he considers a fair price; a comical misunderstanding during a melodramatic play; Stewart's outrage at Flora joining Maori children in sexually suggestive behavior. This conflict lends added texture to Stewart's attempt to lock Ada into their house, and the perplexed reaction of his housemaids. Stewart is not trying to keep the Maori out, but trying to prevent Ada from embracing their world.
As intricate as the script is, it is the intensity of the lead performances which gives THE PIANO most of its power. Holly Hunter has been trumpeted since Cannes as an Oscar front-runner, and it's easy to see why.  The literally breath-taking effect of THE PIANO's climactic scene is exponentially multiplied by Hunter's slow, lingering reaction. Baines' role is less fully explained, a bit too typological, but Keitel shows a surprising gentleness. I may have been most impressed by Sam Neill, freed from the straitjacket of JURASSIC PARK to do some splendid acting. His tormented personality is riveting, and the scenes where he is driven to action ripple with sublimated and misdirected passion.
THE PIANO's only real stumble is the decision to begin and end the film with a voiceover narration of Ada's thoughts. Hunter's attempt at a Scotch accent is shaky, and it detracts somehow from the experience to be allowed inside Ada's head. Otherwise, Campion crafts a stunning film. Stuart Dryburgh's dynamic cinematography helps capture the power of coastline and forest, and Campion's voyeuristic camera placement is thrilling. It's no longer sufficient or appropriate to refer to Jane Campion as one of the best woman director's working; she is simply one of the best directors, and THE PIANO is one of the most haunting films of the year.
On the Renshaw scale of 0 to 10 piano keys: 9.
-- Scott Renshaw Stanford University Office of the General Counsel
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


These are my notes on my first
day of signing up for Intro to Programming.
HTML - Hypertext Markup Language
HTML is made up of:
-text content "what you see"
-markup "what it looks like"
-references to other documents (e.g images or videos)
www.udacity.com/html_playground is where I can play around with coding.
,
HTML MARKUP
Opening Tag, Closing Tag, Element includes both plus contents between the two tags
HTML documents are denpendent on HTML elements.
HTML MARKUP includes bold, emphsis or italics
HTML ATTRIBUTE includes anchor tags for links, image tags for graphics
White Space is how text appears on multiple lines. The break tag is considered inline and a void tag. The paragraph tag is considered block and not a void tag.
The break tag ends a line, whereas the paragraph tag makes an invisible box around text.
SPAN tag is inline.
DIV tag is block.


Oops! No page here
We couldn't find anything at this location. Maybe it went missing, or maybe it was never here in the first place. Try starting from home.
{{ .Hugo.Generator }} {{ template "_internal/google_analytics_async.html" . }}
We couldn't find anything at this location. Maybe it went missing, or maybe it was never here in the first place. Try starting from home.


CATGETS
Section: Linux Programmer's Manual (3)
Updated: 2014-06-13
Index
Return to Main Contents
NAME
catgets - get message from a message catalog
SYNOPSIS
#include <nl_types.h>
char *catgets(nl_catd catalog, int set_number, int message_number,
const char *message);
DESCRIPTION
catgets()
reads the message
message_number,
in set
set_number,
from the message catalog identified by
catalog,
where
catalog
is a catalog descriptor returned from an earlier call to
catopen(3).
The fourth argument,
message,
points to a default message string which will be returned by
catgets()
if the identified message catalog is not currently available.
The
message-text is contained in an internal buffer area and should be copied by
the application if it is to be saved or modified.
The return string is
always terminated with a null byte ('\0').
RETURN VALUE
On success,
catgets()
returns a pointer to an internal buffer area
containing the null-terminated message string.
On failure,
catgets()
returns the value
message.
ATTRIBUTES
Multithreading (see pthreads(7))
The
catgets()
function is thread-safe.
CONFORMING TO
POSIX.1-2001.
NOTES
The
catgets()
function is available only in libc.so.4.4.4c and above.
The Jan 1987 X/Open Portability Guide specifies a more subtle
error return:
message
is returned if the message catalog specified by
catalog
is not available, while an empty string is returned
when the message catalog is available but does not contain
the specified message.
These two possible error returns seem to be discarded in SUSv2
in favor of always returning
message.
SEE ALSO
catopen(3),
setlocale(3)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- ATTRIBUTES
-
- Multithreading (see pthreads(7))
-
- CONFORMING TO
-
- NOTES
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:55:19 GMT, September 18, 2014


{% include 'accounts/base.html' %}
published: {{ event.created_date }}
Description: {{ event.text|linebreaksbr }}
Required guest count: {{ event.attendee_count }}


I recently read this amazing book by John Maeda, about simplicity.
I highly recommend it to anyone, developers and designers. John Maeda is at the exact frontier of both worlds, touching excellence...
He presents what simplicity really is, or sould be, with ten laws to achieve it.
The ten laws are:
Each law is described with a pictogram by John Maeda.
I created some wallpapers with those pictos. They are now displayed each minute on my desktop, remembering me about simplicity, and the need to achieve it, whenever possible.
You can download the wallpaper set from here.
But just don't forget to read this book!


 We connect you with top partners to help you meet your technology goals, access implementation and integration with
Cosmiqo-as-a-service.
Cosmiqo resellers are trained and certified partners that sell and implement Cosmiqo solutions.
➔Cosmiqo combines best-in-business warehouse management providers with leading vendors for warehouse software, hardware, infrastructure, and more.
➔Cosmiqo empowers service providers to deliver reliable, and cost-effective warehouse planning services to customers.
➔Cosmiqo works with the best logistics industry experts that match our solutions to firms that need our solutions most.
➔We are disrupting a $4 billion WMS market and a $2 billion robot software market.
Cosmiqo's distribution channel model brings partners into almost every opportunity.
Cosmiqo works with the technology vendors that you are already selling to - across WMS, Robot Management Systems and Automation.
Increase profitability through resale, repeat purchases, services, and more.
Cosmiqo disrupts warehouse management with our data-driven optimization tools.
Cosmiqo provides a platform that orchestrates robots of different platforms across different brands and type.
Cosmiqo helps warehouses optimize their human and robot assets by enabling them to work together more effectively.
Cosmiqo's data driven simulations allow for optimal warehouse asset and layout planning.


I recently graduated from UC San Diego with a degree in Cognitive Science, specializing in Human-Computer Interaction. I have a strong passion for creating immersive, beautiful experiences for others and making an impact in the community through design. In my down time, I like to letter, paint, run (once in a while), and listen to music. I will be attending New York University as a graduate student in the fall, and am looking for any internship or part time opportunities.
Adobe Illustrator
Adobe InDesign
Sketch
Invision
Balsamiq
Adobe Photoshop
Human Centered Design
User Research
Low-High Fidelity Prototyping
Information Architecture
Visual Design
HTML/CSS
Give a call or send an email and I'll get back to you as soon as possible!
(510) 432-2908


@@include('./include/top.html', { "title": "Barcode to PC: Wi-Fi scanner app" }) Turn your smartphone into a real barcode scanner Download Download server Download .exe Download .dmg Download .AppImage Other versions Features Realtime key strokes Your smartphone sends keystrokes directly to your computer, no copy/paste required! Wi-Fi ready You only need to connect your smartphone to the same network of your computer CSV support You can export your scannings in a CSV format QR Codes Barcode to PC works also with QR codes See usage examples Don't have the app yet? Barcode to PC is available for Android and iOS! Download now to get started! Barcode to PC is an open-source project! View app source-code on GitHub View server source-code on GitHub @@include('./include/bottom.html')
Your smartphone sends keystrokes directly to your computer, no copy/paste required!
You only need to connect your smartphone to the same network of your computer
You can export your scannings in a CSV format
Barcode to PC works also with QR codes
Barcode to PC is available for Android and iOS! Download now to get started!


This is the only stop for all the hardware , software repairing of any kind of disturbance in your pc , laptops , mobiles , tablets , cctv camera and more such devices.
We understand and bring up the soul from your pcs and make them fit and fine as they were before. We very well knows the situations and without a delay we give our services on time. At the part of costing terms..Don't worry about that ! We provide you all first class quality services within the given time we promised and we guarentee that the cost of working won't cross your expectations!
All the web and software development along with repairment and maintaince is handled by us!
We are so capable that by our services we will definately lend you up with satisfaction and without any complains we lend you a grin on your face!
For any such issues in maintainces and repairing + buying and selling of electronic devices(pc . laptop . printers . UPS . Cctv camera ...) we always have a open door for you all.


{% extends 'core/base.html' %} {% load i18n static %} {% load breadcrumbs success_box from directory_components %} {% block content %} {% comment "DISABLED FOR ATLAS MVP" %} {% breadcrumbs 'Why buy from the UK' %} {{ international_home_link.label }} Buy from the UK How we help you buy {% endbreadcrumbs %} {% endcomment %} {% success_box heading_level='h1' heading='Thank you' description="A link to download '5 reasons to buy from the UK' has been emailed to you." %} Next steps Take a look at our other services on great: Invest How to set up in the UK Find a supplier {% endblock %}
Take a look at our other services on great:


Event Location:
SUPINFO Paris
Tour Montparnasse
Paris, Île-de-France, France
Abstract:
Dataviz guru Stephen Few once stated that we should “save the pies for dessert”. What he meant is that pie charts are good in some specific use cases, but they should not be used in others. The same is true for other chart types. Using the wrong type of chart will make it harder for report users to understand the story behind the data. To enable insights, information has to be presented in the most intuitive way possible. You will leave this session with five easy-to-implement rules, which will guide you through the process of creating clear and attractive visualizations. Every rule will be applied through live demos in Excel, Reporting Services and Power BI Desktop, where you will learn how to avoid pitfalls from the defaults in those tools.
Speaker(s): Markus Ehrenmueller-Jensen,
Abstract:
If you ask an expert about using a clustered index you will ALWAYS hear: Yes, you need a clustered index for your table. Last but not least Microsoft Azure Databases requires clustered indexes. But clustered indexes are not always a good choice for your database solution because of several different reasons. This session will start a debate about genius and madness of clustered indexes in your application. This session will run several demos which will show in a very clear way why a clustered index isn't the best choice in several workload scenarios. "There's no lunch for free"! Not using clustered indexes will have ONE heavy drawback - this drawback will be demonstrated, too. The session goal is to make decisions easier for you to use a clustered index or not!
 In this talk, you will get an underpinning of analytical modelling, along with demos of visualizing data and getting insights via Power BI and the challenges of building a SaaS service at scale. Major features of new Power BI will be covered with demos, including natural language query, and others, in the context of Cortana Analytics. Come and learn what model to use when, and how to use data storytelling to display the results meaningfully. Having spent time studying Artificial Intelligence at universities in the UK and in Paris, and then spending a good part of her early career as an Artificial Intelligence consultant, Jen is happy to see that deep analytics and intelligence action is available to everyone in the form of Cortana Analytics. Join her as she demystifies this exciting technology so that you can get insights from your data.
Speaker(s): Jen Stirrup,
Abstract:
The Tabular model in Power Pivot for Excel, Power BI and SSAS Tabular seems to offer only plain-vanilla one-to-many relationships, based on a single column. In 2015 there was the introduction of many-to-many relationships, yet the model seems somewhat poor when compared with SSAS Multidimensional. In reality, by leveraging the DAX language, you can handle virtually any kind of relationship, no matter how complex they are. In this session we will analyze and solve several scenarios with calculated relationships, virtual relationships, complex many-to-many. The goal of the session is to show how to solve complex scenarios with the aid of the DAX language to build unconventional data models.
Speaker(s): Marco Russo,
Abstract:
In this session we will explore the new features introduced with SQL Server 2016 to enhance security. Always Encrypted is a new technology that protects your data not only at rest, but also throughout the whole interaction between the application and the database. Dynamic Data Masking is another interesting feature that allows us to protect sensitive data by masking it to all users that don’t have enough privileges to see the actual contents. Row Level Security allows showing to end users only the data they’re entitled to access, without changing the applications’ code. We will demonstrate the use of these three features with example applications and we will explore the use cases where these technologies represent a big leap from previous custom implementations.
Speaker(s): Gianluca Sartori,
Abstract:
In this Session we will delve into the need to deploy and manage SQL Server Configurations using PowerShell Desired State Configuration and the immediate benefits that this can and will bring to your deployment and administration of this very much vital technology. Believe me when I say that I am no SQL Expert but this session will leave those that attend in a position to go away and look to implement this in their organisation and really reap the benefits that managing your Infrastructure as Code brings to a flexible an more maintainable environment. This session will also briefly cover the other core necessities that will be required to get this underway which include the importance of Source Control for the configurations, Community Developed Resources more.
Speaker(s): Ryan Yates,
Abstract:
In an enterprise, merging master data, like customer data, from multiple sources is a common problem. Typically, you do not have a single, i.e. the same key identifying a customer in different sources. You have to match data based on similarity of strings, like names and addresses. In this session, we are going to check how different algorithms for comparing strings included in SQL Server work. We are going to use four different algorithms that come with Master Data Services (Levenshtein, Jaccard, Jaro-Winkler and Ratcliff-Obershelp), and Fuzzy Lookup transformation from Integration Services. Finally, we are going to introduce how SQL Server Data Quality Services help us here.
Speaker(s): Dejan Sarka,
Abstract:
La roadmap BI de Microsoft est rarement bien comprise. On premises nous avons SharePoint 2013 ainsi que de nouvelles fonctionnalit#233;s BI en SharePoint 2016. Dans le cloud nous avons la PowerBI ; la PowerBI elle-m#234;me a #233;t#233; r#233;vis#233;e en profondeur par Microsoft de sorte qu’il devient assez compliqu#233; de comprendre la diff#233;rence entre la PowerBI v1 et la PowerBI v2. C’est ce qu’il sera clarifi#233; lors de cette session o#249; Serge Luca (SharePoint MVP) et Isabelle Van Campenhoudt (SQL Server MVP) d#233;criront les fonctionnalit#233;s de Business Intelligence de SharePoint 2016 , les am#233;liorations par rapport #224; SharePoint 2013; en seconde partie de session la nouvelle version de PowerBI (V2) sera #233;galement illustr#233;e et expliqu#233;e, en ce y compris les sc#233;narios hybrides.
Speaker(s): serge Luca,
Abstract:
V#233;lib est un service public #224; grande #233;chelle de location de v#233;los sur la r#233;gion parisienne en France. Lanc#233; le 15 juillet 2007, le service propose aujourd’hui environ 14 500 v#233;los et 1230 stations sur Paris. Gr#226;ce #224; la suite Azure Cortana Analytics Suite, nous allons mettre en place une solution d’analyse des donn#233;es de ces V#233;lib de fa#231;on #224; r#233;pondre #224; 2 probl#233;matiques : - Obtenir une analyse descriptive en temps r#233;el du r#233;seau V#233;lib - Mettre #224; disposition une analyse pr#233;dictive permettant de pr#233;dire la disponibilit#233; du nombre de v#233;los et de stations disponibles pour une station donn#233;e. Dans la pr#233;sentation nous montrerons comment nous avons mis en place la solution dans le Cloud Azure #224; l’aide des services suivants : - Azure Event Hubs - Azure Stream Analytics - Azure Data Factory - Azure Machine Learning - Azure SQL Database - Power BI
Speaker(s): Romain Casteres,
Abstract:
Le monde de la donn#233;e est en pleine mutation. Le Data devient Big, le SQL devient NoSQL, la BI devient Analytics, le Data Mining devient Data Science… Faux buzz ou vrais paradigmes, quoiqu'il en soit, de nouvelles architectures apparaissent pour traiter les challenges d'aujourd'hui. Microsoft propose ses solutions au travers de Cortana Analytics, veritable mashup des briques Data du Cloud Azure : Azure Data Catalog, Azure Stream Analytics, Azure Data Lake, Azure Data Factory, Azure ML, HDInsight, etc. Que font ces briques ? Lesquelles choisir ? Comment s'interconnectent-elles ? Quelle architecture impl#233;menter ? Ce sont ces questions que nous aborderons lors de cette session.
Speaker(s): Jean-Pierre Riehl,
Abstract:
Learning how to detect, diagnose and resolve performance problems in SQL Server is tough. Often, years are spent learning how to use the tools and techniques that help you detect when a problem is occurring, diagnose the root-cause of the problem, and then resolve the problem. In this session, attendees will see demonstrations of the tools and techniques which make difficult troubleshooting scenarios much faster and easier, including: • XEvents, Profiler/Traces, and PerfMon • Using Dynamic Management Views (DMVs) • Advanced Diagnostics Using Wait Stats • Reading SQL Server execution plan Every DBA needs to know how to keep their SQL Server in tip-top condition, and you’ll need skills the covered in this session to do it.
Speaker(s): Kevin Kline,
Abstract:
Have you ever gotten tired of your database taking hours to back up?  Now you won't have to worry about that anymore. In this session I show you some little known tricks, methods, and trace flags you can use to tune your backups just like you would a query. You'll learn about the backup "execution plan" and how to access it. Understanding how to tune the individual portions of your backup process will allow you to knock 80% and even more off of your backup and restore time. I’m not holding anything back in this session. This is a method I’ve used for 15 years to tune my backups and I’ve had great success.
Speaker(s): Sean McCown,
Abstract:
Assurer la mont#233;e en charge d'une application fait partie int#233;grante des t#226;ches qui incombent au DBA. M#234;me si bon nombre de choix influant sur l'#233;volutivit#233; de l'application sont inh#233;rents au d#233;veloppement et #224; l'architecture de l'applicatif, SQL Server offre portant bon nombre de possibilit#233;s afin de supporter la mont#233;e en charge. Techniques et retour d'exp#233;rience sur un domaine m#234;lant optimisation, architecture, infrastructure et ing#233;niosit#233;.
Speaker(s): Christophe Laporte,
Abstract:
What if migrating SQL Server instances was as simple as executing a single command? In this presentation, I'll cover the reasons companies migrate, the ways SQL migrations are usually performed, and the considerations that must be made when performing a migration. Then I'll show you how to use the PowerShell dbatools module to simplify your SQL Server migrations. dbatools makes migrating databases, logins, linked servers, credentials, jobs, database mail, and other essential SQL components extremely easy.
Speaker(s): Chrissy LeMaire,
Abstract:
In 1h we will understand the main concepts of Complex Event Processing, the "technological roots" of it at Microsoft (StreamInsight under SQL 2008 R2) then moving the implementation to Azure's corresponding service - Stream Analytics. Main use cases, including IoT but not only.
Speaker(s): Marius Zaharia,
Abstract:
Mise #224; niveau du moteur de base de donn#233;es - Pourquoi migrer ? Fin de support, une nouvelle fonctionnalit#233; strat#233;gique... - #201;valuer les risques de r#233;gression du code : Upgrade Advisor - #201;valuer les risques de r#233;gression sur la performance : Profiler (Distributed Replay Utility), XEvent - Pr#233;parer la mise #224; niveau : Inventaire des objets #224; migrer, m#233;thodes de migration... - Dans quel cas un rollback est possible ? Plan guide, traceflag...
Speaker(s): Sarah Bessard,
Abstract:
Le Query Store, tout le monde en parle pour diagnostiquer les probl#232;mes de performance en fonction de l'historique mais qu'est qui se cache en d#233;tail derri#232;re cette fonction. Pendant une heure, nous allons regarder en d#233;tail ce qui fait tourner ce moteur, ces cas d'usage et ses limites. Tout sera pass#233; #224; l'analyse et nous verrons si la fonction tient ses promesses : trouver les probl#232;mes de performancesen comparant avec ce qui s'est pass#233;.
Speaker(s): Philippe Geiger,
Abstract:
Do you want to know more about SQL Server and data consistency mechanisms? Please join this session ... We’ll talk about logical locking but also how SQL Server protects its physical data structures in memory with lightweight synchronization objects like Latches and Spinlocks.
Speaker(s): David Barbarin,
Abstract:
Nous vous proposons une session qui sort des sentiers battus, #224; base d'une architecture dont voici quelques #233;l#233;ments : - Des fichiers tr#232;s volumineux - Un stockage sur Azure Data Lake - Un traitement en U-SQL - Un ordonnancement avec ADF - Un SQL Server 2016 avec Polybase - Et enfin un cube Tabular en DirectQuery Pensez-vous qu'une telle architecture peut donner quelque chose de viable ? Venez le d#233;couvrir avec nous :)
Speaker(s): Charles-Henri Sauget,
Abstract:
D#233;couvrir les multiples possibilit#233;s de dashboarding de Power BI -int#233;gration graphiques et tableaux crois#233;s dynamiques depuis Excel -int#233;gration images dynamiques -insertion de graphiques personnalis#233;s -Partage des dashboards -Int#233;gration Power Point et Office 365
Speaker(s): jean-pierre Girardot,
This is a list of speakers from the XML Guidebook records. The details and URLs were valid at the time of the event.
Contact: http://blogs.solidq.com/dsarka/Home.aspx
Dejan Sarka, MCT and Data Platform MVP, is an independent trainer and consultant that focuses on development of database and business intelligence applications. Besides projects, he spends about half of his time on training and mentoring. He is the founder of the Slovenian SQL Server and .NET Users Group. Dejan Sarka is the main author or co-author of eighteen books about databases and SQL Server. Dejan Sarka has also developed many courses and seminars for Microsoft, Radacad, SolidQ, and Pluralsight.
LinkedIn: http://uk.linkedin.com/in/jenstirrup/
Contact: http://www.jenstirrup.com
Jen Stirrup, Microsoft Regional Director and MVP is a well-known Business Intelligence and Data Visualization expert, author, data strategist, and Master of Business Administration (MBA) student in London. Jen leads a boutique analytics consultancy, delivering strategic advice to companies large and small. Jen has presented in Africa, India, Europe and North America. Jen has presented at Ignite, Techorama, TechEd, PASS Summit, SQLBits, and SQLSaturday events in Europe and the US. She also delivers the MAPA Azure Architects course worldwide with Microsoft team members. Jen was also featured on the Best of PASS Summit 2015 DVD as one of the top 10 speakers. Jen also was awarded PASS prestigious PASSion Award in 2012
LinkedIn: https://www.linkedin.com/in/charleshenrisauget
Contact: http://www.sauget-ch.fr
Consultant décisionnel depuis 2009, j'ai eu l'occasion d'explorer certaines des fonctionnalités offertes par SQL Server, et cela est loin d'être terminé avec la croissance des volumes de données, et les nouveaux outils à disposition (Data Insights), de nouveaux défis vont très certainement s'offrir à nous. Même si la B.I. reste mon coeur de métier, je ne cache pas mon intérêt pour le Moteur SQL Server, surtout si l'on rajoute à ceci l'impact d'un hébergement en IaaS dans Azure !
Contact: http://sergeluca.wordpress.com/
Serge Luca is a SharePoint MVP since 2007, co-author a book in SharePoint 2013 and author for SharePoint Pro Magazine and well known international speaker (ESC14, ESPC15, SharePoint Summit Canada, TechDays, Tech Ed, many SharePoint Saturdays around the world…). Serge has been working with SharePoint since the beginning of the product in 2001. As a real SharePoint architect Serge focus both on the infrastructure, the business side and the development side of SharePoint and Office 365. He has executed several assignments for the Microsoft SharePoint team (Redmond) across the world and has worked for Microsoft Learning as a Subject Matter Expert. He has trained more than a thousand developers in SharePoint.
LinkedIn: http://www.linkedin.com/profile/view?id=270775013amp;trk=tab_pro
Contact: http://www.sqlmaster.de
Uwe Ricken is working with IT systems since the 90’s. The primary passion for developments with Microsoft SQL Server expanded in 2007 with his engagement as a DBA for Deutsche Bank AG in Frankfurt am Main. After 6 years of operational experiences as a DBA and over 14 years as a developer of complex database models he achieved the “Microsoft Certified Master – SQL Server 2008” certification which “was” the highest technical certification. In the same year he earned his first award as a Data Platform MVP for his support to the Microsoft SQL Server community in Germany and Europe. Uwe Ricken is a speaker on many international conferences and events and preferred topics are “Database Internals”, “Indexing” and “Development”.
LinkedIn: https://fr.linkedin.com/in/casteres
Contact: http://pulsweb.fr/
MVP SQL Server, certifi#233; MCITP, MCTS, MCSA 2008/2012 et membre du Board du Groupe Utilisateurs SQL Server (GUSS). Consultant en Business Intelligence depuis plus de 4 ans je me suis sp#233;cialis#233; sur les technologies d#233;cisionnelles de Microsoft, le moteur SQL Server et plus r#233;cemment sur HDInsight, l#39;offre BigData de Microsoft. Blog: http://www.pulsweb.fr/
Contact: http://www.bi-365.fr
Jean-Pierre Girardot est Consultant ind#233;pendant sur les offres d#233;cisionnelles Power BI de Microsoft et Pyramid Analytics. Ayant cr#233;#233; et g#233;r#233; plusieurs soci#233;t#233;s d#39;informatique, il a acquis une haute expertise sur l#39;apport des outils d#39;aide #224; la d#233;cision dans la gestion des entreprises. Aujourd#39;hui, pour r#233;pondre au besoin croissant des entreprises concernant l#39;analyse de l#39;information, il accompagne ses clients dans la mise en place de solutions d#233;cisionnelles Libre-Service.
LinkedIn: https://www.linkedin.com/in/markus-ehrenmueller/
Contact: http://www.savorydata.com
Markus Ehrenmueller-Jensen, as the founder of Savory Data, has a long history of providing customer solutions in the areas of data engineering, data science, and Business Intelligence. He is a certified software engineer, a graduated business educator, and professor of Databases Project Management at HTL Leonding, and is certified as an MCSE MCT. He is a published author and writes articles for well-known journals. He co-founded PASS Austria and organizes SQLSaturdays in Austria. Markus is a founding member of Power BI Usergroup Austria. Since 2017 Markus was awarded as an Microsoft Data Platform MVP.
LinkedIn: https://fr.linkedin.com/pub/sarah-bessard/87/972/495
J#39;ai fait mes premi#232;res armes comme analyste programmeur et administrateur syst#232;me par la suite pour finalement me sp#233;cialiser sur SQL Server en 2005. Toutes ces exp#233;riences m#39;ont permis d#39;acqu#233;rir une vision globale des syst#232;mes d#39;information. Gr#226;ce au GUSS qui f#233;d#232;re la communaut#233; Data Microsoft en France, j#39;ai l#39;occasion d#39;animer des webcasts #224; intervalle r#233;gulier et int#233;gr#233; le board pour entretenir plus activement cette passion.
LinkedIn: http://fr.linkedin.com/in/christophelaporte
Contact: http://conseilit.wordpress.com/
Christophe Laporte is based in Toulouse, France and has worked with SQL Server since 1997, starting with SQL Server 6.5. Focusing on high availability, VLDBs, and virtualization, Christophe also delivers performance audits on SQL Server and helps companies in choosing the appropriate architectures (Cloud, OnPremise, or Hybrid). In addition to his MCM certification, Christophe is also a SQL MVP, speaker, and Microsoft Certified Trainer since 2000.
Contact: http://blog.lecampusazure.net
Azure MVP and Advisor, community manager of AZUG.FR
LinkedIn: http://www.linkedin.com/in/kekline/
Contact: http://blogs.sentryone.com/author/kevinkline
Kevin Kline is a database and industry expert serving as Principal Program Manager at SentryOne, the industry leading SQL Server database tools vendor. A Microsoft SQL Server MVP since 2003, he is a founder and former president of PASS. Kevin is an author of many books, blogger, columnist, and popular international speaker. Kevin’s best known book is the best-selling SQL in a Nutshell and contributes monthly to Database Trends Applications magazine. He tweets at @kekline and blogs at http://Blogs.SQLSentry.com/Author/KevinKline.
Contact: http://www.midnightdba.com/dbarant
Sean McCown is a Certified Master with 23 years of experience in databases. He is also founder and co-owner of the MidnightDBA.com website, where he records free SQL Server training videos. He also writes the popular Minion Maintenance suite, the most configurable maintenance solution on the planet.
LinkedIn: http://fr.linkedin.com/in/djeepy1
Contact: http://blog.djeepy1.net
Architect, Consultant, Trainer and also Manager, Jean-Pierre leads the Data BI Practice at AZEO, a French Microsoft "pure-player" partner. Jean-Pierre is MVP Data Platform since 2008 and speaks at many events in France and in Europe. JP leads the local community (GUSS) and organize events in France since 2011 : MS Cloud Summit, Les Journées SQL Server, SQLSaturday, etc. JP is passionate by data concerns in business like Data Governance, Data Quality or Data Vizualisation and since 2010, he’s specialized in Self-Service BI. His favorite topic is Power BI and business usages and technical architectures that go with.
LinkedIn: http://it.linkedin.com/pub/gianluca-sartori/23/50b/a12
Contact: http://spaghettidba.com
Gianluca Sartori is a Data Platform MVP, independent consultant and performance tuning specialist. He has been working in the software industry since 1999 and has been working with SQL Server ever since. He also works as a SQL Server trainer and in his spare time he writes technical articles and participates the SQL Server forums. Gianluca enjoys presenting SQL Server topics at conferences in Europe and in Italy in particular. He is currently working as lead DBA at a famous Formula 1 team.
Contact: http://www.kilasuit.org/blog
SharePoint amp; PowerShell Specialist - moving more into a dedicated PowerShell focus to help coach organisations in methods that they can use to improve their configuration management on a larger scale allowing them to deploy production ready code quicker, easier and with more confidence and importantly at scale in a repeatable manner. Co-Ordinator of the UK PowerShell User Groups - with groups in Manchester amp; London but with a view to expand this across the UK in 2016 - If interested in getting one going in your area then lets talk about it :-)
LinkedIn: http://www.linkedin.com/in/sqlbi
Contact: https://www.sqlbi.com/blog/marco
Marco is a Business Intelligence consultant and mentor. He wrote several books about Power BI, Analysis Service, and Power Pivot. He also regularly writes articles and white papers that are available on sqlbi.com. Marco is a Microsoft MVP and an SSAS Maestro, the highest level of certification on Microsoft Analysis Services. Today, Marco focuses his time with SQLBI customers, traveling extensively to train and consult on DAX and data modeling for Power BI and Analysis Services. Marco also teaches public classes worldwide. Marco is a regular speaker at international conferences like Microsoft Ignite, PASS Summit, and SQLBits. He also enjoys delivering evening sessions at local user groups during his trips.
LinkedIn: http://fr.linkedin.com/in/mikedavem/en
Contact: http://www.dbi-services.com/index.php/blog/dbi-bloggers/blogger/listings/dab
David Barbarin is Consultant at dbi services. He has more than ten years of experience in Microsoft solutions. He is specialized in SQL Server technologies and associated topics such as installation, migration, security audits, troubleshooting of performance issues, or high availability architectures etc. David Barbarin is SQL Server MVP (since 2010), Microsoft Certified Master (MCM) for SQL Server, and Microsoft Certified Trainer (MCT).
LinkedIn: https://fr.linkedin.com/in/pgeiger
Contact: http://blog.pgeiger.net/
Consultant certifié Microsoft SQL Server, Philippe Geiger accompagne aussi bien des professionnels en infrastructure, en décisionnel que des développeurs. Maîtrisant toutes les versions de SQL Server, il assure également, en sa qualité de formateur certifié, les formations officielles de Microsoft. Il est aussi membre du programme "Microsoft Professional Program on Data Science". Basé en Alsace, Philippe travaille chez Titanium, Groupe Calliope, société "Pure Player" Microsoft.
LinkedIn: http://linkedin.com/in/chrissylemaire
Contact: https://netnerds.net
Chrissy LeMaire is a Data Platform and PowerShell MVP who has worked in IT for over 20 years. She works for General Dynamics and serves as the SQL Server DBA at NATO Special Ops HQ in Belgium. She is also an avid scripter, and has used PowerShell since it was introduced in 2005 at the Microsoft Professional Conference in Los Angeles. Chrissy is the creator of the popular dbatools PowerShell module for SQL Server. Chrissy recently achieved her MS in Systems Engineering at Regis University
The following is a list of sponsors that helped fund the event.


The base package that contains the entirety of the API.
InsnLine
class InsnLine
A structure representing a line of code. Acts as a List of CtInsn.
javassist.CtClass
javassist.CtMethod
kotlin.collections.List


flat
plate collector EN12975
Path: CARNOT/heat_source
Purpose
Collector model according to EN 12975 standard.
Description
Energy balance:
mdot cp (Tout-Tin) /A = F'(TauAlfa) Kdir Idir + F'(TauAlfa) Kdfu
Idfu
- c1 (Tm-Tamb) - c2 (Tm-Tamb)² - c3
v_wind (Tm-Ta) - c6 v_wind Iglb
+ c4 (ELongwave -
sigmaSB*(Tamb+273.15)4) - c5 dTm/dt
Often in test reports the optical efficiency or conversion factor eta0 is given.
The correlation for F'(TauAlfa) is:
eta0 = F'(TauAlfa) * (Kdir(15°)*0.85 + Kdfu*0.15)
or F'(TauAlfa) = eta0 / (Kdir(15°)*0.85 + Kdfu*0.15)
where Kdir = 1 - b0 *
(1/cos(teta) -1)
with
teta = 60°
|
symbol |
used for |
unit |
|
A |
collector aperture area (or absorber area, depending on the referenced parameters c1...c6) |
m² |
|
bo |
constant for the calculation of the incident angle modifier |
|
|
c1 |
heat loss coefficient at (Tm - Ta)=0 |
W/(m²K) |
|
c2 |
temperature dependence of the heat loss coefficient |
W/(m²K²) |
|
c3 |
wind speed dependence of the heat loss coefficient |
J/(m³K) |
|
c4 |
sky temperature dependence of the heat loss coefficient |
W/(m²K) |
|
c5 |
effective thermal capacity |
J/(m²K) |
|
c6 |
wind dependence in the zero loss efficiency |
s/m |
|
eta0 |
optical collector efficiency |
|
|
F' |
collector fin efficiency factor |
|
|
TauAlfa |
effective transmittance-absorptance product for direct solar radiation at normal incidence |
|
|
teta |
incidence angle of the direct radiation on the collector |
degree |
|
Tm |
mean collector node temperature |
°C |
|
Tamb |
ambient temperature |
°C |
|
v_wind |
wind velocity |
m/s |
|
ELongwave |
longwave irradiance with wave length > 3000 nm |
W/m² |
|
Iglb |
global solar radiation on the collector plane |
W/m² |
|
Idir |
direct solar radiation on the collector plane |
W/m² |
|
Idfu |
diffuse solar radiation on the collector plane |
W/m² |
|
Kdir |
incidence angle modifer for direct solar radiation |
|
|
Kdfu |
incidence angle modifier for diffuse solar radiation |
|
|
sigmaSB |
Stefan-Boltzmann constant |
W/(m²K4) |
Parameters and Dialog Box
Characteristics
Direct Feedthrough Yes
Sample
time
Inherited
from driving block
States
1
Vectorized
No


Home
Blog
About
5ky1s61ue's Blog
Try to be a hacker, hack in mylife and take control of it.
View on GitHub
About Me
Currently nothing here.
back


I am a recent college graduate from the University of Colorado in Denver looking for a job within the Web and Software Development industries. I am a highly motivated person who wants to help people through their use of apps. I also like to work on encryption. During the last few years of my college education, I began learning about cryptography in order to create my personal library of cryptographic algorithms. My hope for this personal work of mine is to apply it securing people's apps. I am currently working part-time as a penetration tester for a start-up company called ACED Intervention.
Michael's CredentialsWas responsible for integrating a Push-To-Talk widget into an Android app called ATAK
Talk about Michael's Education
Ready to start your next project with me? That's great! Give me a call or send me an email and I will get back to you as soon as possible!
720-439-0255


Grid
The grid layout is heavily based on Bootstrap's grid, so you will notice many similarities. The grid layout is based on the principle that content is contained within a row, and each row contains up to 12 columns. For example, 12 columns would take up an entire row, 6 columns are half a row, 4 columns are a third of a row, and so on.
Breakpoints
Breakpoints include:
| Breakpoint | Description | Example |
|---|---|---|
{none} |
Display on all windows | col-12 |
md |
Display on all windows 600px wide and above | col-md-12 |
lg |
Display on all windows 900px wide and above | col-lg-12 |
xl |
Display on all windows 1200px wide and above | col-xl-12 |
Columns, columns inside columns
Each row equals total 12 columns. Column widths are specified by using col-1 to col-12. A 1rem left and right padding is added to each column unless the class no-gutters is added to the row.
col-md-6
col-md-6
If more than 12 columns are defined, they will automatically wrap to a new row
First
Second
Third
Fourth
Fifth
Columns can be hidden using d-{breakpoint}-none
col-6 d-lg-none
col-6 col-lg-12
Column offsets
Offsets can be used in place of columns. Each row still equals a total of 12 columns. Offsets are specified by using offset-1 to offset-12.
col-4 offset-8
col-6 offset-3
Equal column width
Add any number of columns with class col to create any number of equal width columns
First col
Second col
Third col
Automatic column width
Class col-auto will automatically adjust the width of the column to fit it's contents.
First col
Second col- This column will adjust
Third col
Automatic column height
Columns will all automatically have the same height by default.
No matter how little or how much content appears in a column, all columns in the same row will all have the same height...
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Column order
Column orders can be set with order-{breakpoint}-first, order-{breakpoint}-last, or order-{breakpoint}-{1-12}, or completely reversed by adding flex-{breakpoint}-row-reverse to the row
flex-{breakpoint}-row-reverse
First
Second
Third
Fourth
order-{breakpoint}-first
First
Second
Third order-lg-first
Fourth
order-{breakpoint}-last
First
Second order-lg-last
Third
Fourth
Horizontal/vertical alignment
Horizontal alignment classes include justify-content-{breakpoint}-start, justify-content-{breakpoint}-center, justify-content-{breakpoint}-end, justify-content-{breakpoint}-around, justify-content-{breakpoint}-between. These classes must be added to the row.
Horizontally aligned left
Horizontally aligned center
Horizontally aligned right
Row between
Adding class justify-content-{breakpoint}-between to the row will space the columns out evenly, with the first column on the start line and last item on the end line
This is only 3 columns
This is only 3 columns
This is only 3 columns
Row around
Adding class justify-content-{breakpoint}-around to the row will space the columns out evenly with equal space around them.
This is only 3 columns
This is only 3 columns
This is only 3 columns
Vertical alignment classes include align-items-{breakpoint}-start, align-items-{breakpoint}-center, align-items-{breakpoint}-end.
Vertically aligned top
Vertically aligned center
Vertically aligned bottom
Horizontally & vertically aligned in the center


arrow_back
Mongol Text Field
box
box - required
outlined
outlined - required - email - helperText
box disabled
fullWidth


We just sent you an email to confirm your registration. Click on the link included to verify your account.


Get a Bookmark for Sharing Web Pages and Google Documents
Bookmark: Share
Add the bookmark to your web browser to make it easy to share web pages with friends and groups!
- Now, browse to a web page or Google document and click the bookmark to share the page or document.


WITNESS LIST Public School Finance, Select Committee September 11, 2003-2:00P Public School Finance On: Casey, Daniel (Self) Clark, Catherine (Texas Association of School Boards) Colyandro, John (Texas Conservative Coalition) Duggan, Brad (Self) Hammond, Bill (Texas Association of Business) Moak, Lynn (Self) Stevens, John (Texas Business and Education Coalition)


China sentences 9 to jail for smuggling fentanyl to US
by ReutersXINGTAI: A Chinese court on Thursday jailed nine people, one with a suspended death sentence, for smuggling fentanyl into the United States, saying this was the first such case the two countries had worked together on.
China has faced US criticism for not doing enough to prevent the flow of fentanyl into the United States, and the issue has become another irritant in ties, already strained by a bruising trade war the two are now working to end.
The announcement of the successful action against the smugglers comes as the two countries are expected to sign an interim trade deal.
Fentanyl is a highly addictive synthetic opioid, 50 times more potent than heroin.
It is often used to make counterfeit narcotics because of its relatively cheap price and it has played an increasingly central role in an opioid crisis in the United States.
Yu Haibin, a senior official with China’s National Narcotics Control Commission, told reporters in the northern city of Xingtai where the court case was heard, that Chinese and US law enforcement had worked together to break up the ring, which smuggled fentanyl and other opioids to the United States via courier.
One of the people sentenced by the court was given a suspended death sentence – which in practice is normally commuted to life in jail – and two got life sentences, Yu said.
More than 28,000 synthetic opioid-related overdose deaths, mostly from fentanyl-related substances, were recorded in the United States in 2017, according to the US Centers for Disease Control and Prevention.
US drug enforcement has pointed to China as the source of fentanyl and its related supplies. China denies that most of the illicit fentanyl entering the United States originates in China, and says the United States must do more to reduce demand.
Yu said that the issue of fentanyl was not something any one country could resolve.
“If illegal demand cannot be effectively reduced, it is very difficult to fundamentally tackle the fentanyl issue.”
In August, US President Donald Trump accused Chinese President Xi Jinping of not fulfilling a promise to crack down on fentanyl and its analogues.
Yu said China was willing to work with US law enforcement authorities and all other international colleagues to fight narcotics and “continue to contribute China’s wisdom and power for the global management of narcotics”.


Clean code and eye catching design
Lansera is a free one page template, designed and built with the app creators in mind.
12,543
Users
18,783
Downloads
621
5 Stars Ratings
Best Template for you
Lansera is a free one page template, designed and built with the app creators in mind.
Title
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
Title
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
Why you will choose our app?
Lansera is a free one page template, designed and built with the app creators in mind.
Title
Lorem ipsum dolor sit amet, consecteur adipiscing elit, sed do eiusmod tempor.
Title
Lorem ipsum dolor sit amet, consecteur adipiscing elit, sed do eiusmod tempor.
Title
Lorem ipsum dolor sit amet, consecteur adipiscing elit, sed do eiusmod tempor.
Title
Lorem ipsum dolor sit amet, consecteur adipiscing elit, sed do eiusmod tempor.
Frequent Asked Questions
Do you have a question? This is the place where you can find everything you need to know so you can use Lansera like a pro.
Get started
Lansera is a free one page template, designed and built with the app creators in mind.


Queen scores 20 as New Mexico St. beats Southern 79-63
by The Associated PressLAS CRUCES, N.M. (AP) — Trevelin Queen scored 20 points, including three 3-pointers, Ivan Aurrecoechea added 19 points, and New Mexico State beat Southern 79-63 on Thursday night.
Shawn Williams hit 4 of 6 from 3-point range and finished with 17 points for New Mexico State.
Queen made a 3 and then converted a three-point play during an 11-0 run that made it 19-11 with eight minutes left in the first half and the Aggies (2-1) led the rest of the way. They took a 30-25 lead into halftime, opened the second half with an 8-0 run and led by 19 after Williams made a 3 with 8:54 to play. Southern (1-2) scored 22 of the next 31 points to trim its deficit to 64-58 about six minutes later but New Mexico State responded with a 10-0 spurt.
Micah Bradford led the Jaguars with 15 points and Montese Blake scored 12.
___
For more AP college basketball coverage: https://apnews.com/Collegebasketball and http://twitter.com/AP_Top25
The Associated Press


About
Resume
Web Design
Tree Walk
Other Work
Other Work
Motion Graphics,
Photography Samples,
Designs
Motion Graphics
Photography
Other Designs


{% extends "layout.html" %} {% from "_flashhelpers.html" import render_flashes %} {% from "_formhelpers.html" import link_button %} {% from "_navhelpers.html" import render_nav %} {% block body %}
- Enter your name, if you would like to record it with your photos (optional).
- Select the photos you would like to upload using the Add files button
- Click the Start upload button to upload them or the Cancel button to remove files queued for upload
- Once the photo uploads are complete, you can review the photos and delete them if necessary
- Repeat the process as many times as you would like (the photos you upload will remain here for your review).